質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2980閲覧

C#からVBへのコード変換でわからない箇所があります。(Razor構文)

Eltk

総合スコア51

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/05/01 10:21

前提・実現したいこと

C#で書かれたMicrosoftのドキュメントに沿って、前からASP.NET MVCの学習を進めているのですが、
仕事の関係上VBでコードが書けるようにならないといけないため、
以下のサイトを参考にしながら、C#→VBに変換しながら学習を進めております。
https://converter.telerik.com/

その過程で、どうしてもエラーが解消できない箇所があり、質問させていただきました。

※参考にしているMicrosoftのサイトの該当ページ(詳細は以下のソースコードや添付画像の箇所です)
https://docs.microsoft.com/ja-jp/aspnet/mvc/overview/getting-started/introduction/adding-search

発生している問題・エラーメッセージ

「開始タグに対応する終了タグがありません。」 というエラーメッセージが、以下の(「試したこと」に記載させていただいている)ソースコードの一番最後の行、 </p> に対して表示されます。

該当のソースコード

C#

1<p> 2 @Html.ActionLink("Create New", "Create") 3 4 @using (Html.BeginForm()){ 5 <p> Title: @Html.TextBox("SearchString") <br /> 6 <input type="submit" value="Filter" /></p> 7 } 8</p>

試したこと

VisualBasic

1※自身で書き直してみたのがこちらのコードになります。 2<p> 3 @Html.ActionLink("Create New", "Create") 4 @Using Html.BeginForm() 5 @<p> Title :@Html.TextBox("SearchString") <br /> 6 <input type = "submit" value="Filter" /></p> 7 End Using 8</p>

補足情報(FW/ツールのバージョンなど)

統合開発環境
Visual Studio2019
(言語:VB.NET、プロジェクトテンプレート:ASP.NET Webアプリケーション MVC)

使用PC
Windows10

※平日は仕事のため、返信が19:30以降になります。
※休日の返信は不定期です。
申し訳ございませんが、どうぞよろしくお願いします。

※該当箇所の画像↓
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

回答は後半で書いてありますが、割と重要だと思いますので前半で質問とは関係ありませんがVBという言語について重要な事を書いておきます。
VBは終焉を宣言されました。新たなプロジェクトでVBを選択するというのであれば以下の記事を見てもらってください。既存のプロジェクトの更新ならそう遠くないうちに別言語へのリプレースが必要になる恐れがあるかもしれません
「Visual Basic」は.NET Coreでもサポートを継続 ~ただし、言語としての発展は終わり

以下が回答になります。
VSがHTMLの文法チェックでNGを出しています。
以下のコードを~.vbhtmlの空いてるところに記述してみてください

html

1<p> 2 <p></P> 3</p>

二つ目の</p>で「開始タグに対応する終了タグがありません。」のエラーが表示されるはずです
pタグは段落を示すタグです
MDN <p>: 段落要素

段落はブロックレベル要素であり、特徴的なのは </p> で閉じる前に他のブロックレベル要素が見つかった場合は自動的に閉じることです。

上記の仕様によると、二つ目の<p>タグに対する</p>で一つ目と二つ目の両方閉じる挙動になるのかもしれません
適切にタグを使用すればいいのかと思います
htmlのどのバージョンをターゲットとして作成しているのか分かりませんが、とりあえずブロックとして扱うのであれば<div>タグにしておけばいいかと思います
html5だとより適切なタグがあるかもしれませんので、実際に作成しているコンテンツに合わせたタグを適用してみてください
ちなみにVS2019previewで試して見たところHtml.BeginFormの中の<p>タグを<div>タグに変更したら警告が出なくなりました

追記:なぜMSの公式にあるサンプルページでこのようなコードが乗っているのかという疑問について
該当コードの下の説明文に以下の文章があります

Visual Studio 2013 では、表示およびファイルの表示を編集するときに便利な機能強化があります。 アプリケーションを実行するビュー ファイルを開き、Visual Studio 2013 は、ビューを表示する適切なコント ローラー アクション メソッドを呼び出します。

古いバージョンの記事を編集して使いまわしているのでVS2013当時では特に問題にならなかったのかもしれません

投稿2020/05/01 15:50

編集2020/05/01 21:22
len_souko

総合スコア1363

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Eltk

2020/05/02 01:59

>len_souko様 ご回答いただき、ありがとうございます。 また、VBの現状についても教えていただき、ありがとうございます。 参考になりました。 教えていただいた、「<p>タグを任意の位置に挿入する」方は、僕のやり方が悪かったのか、ちょっとエラーが改善されませんでしたが、<div>タグに変更する方で解消され、実行時にきちんと反映されていることが確認できました! ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/05/02 02:21 編集

横レス失礼します。 質問者さん> 今回の問題は C# とか VB.NET とかにはぜんぜん関係はなく、単に html コードの書き方の問題で、それに Visual Studio が警告を出したということですが、そこは理解してますか? ちなみに、C# でも同じ警告が出ますよ。 html ソースの話なので、コンパイルして実行はできます。html コードはそのままレンダリングされるので、今回の問題の p タグが入れ子になっている部分はそのままブラウザに送られます。そこをどう解釈するかはブラウザによりますが、たぶんほとんどのブラウザで問題なく表示されると思います。
Eltk

2020/05/02 05:21

>SurferOnWww様 今回のエラーの原因がHTMLコードの書き方が原因であることは、len_souko様の回答内のMDNのリンクページを見てはじめてわかりました。 もともとVisual Studioで実行時にエラー(「開始タグに対応する終了タグがありません。」)(※ブラウザはEdge)が出て、今回質問させていただきました。
len_souko

2020/05/02 06:08

正確にはエラーでなくワーニング(警告)ですね サーファーさんの補足の通り、大概のブラウザならいい感じに解釈してくれるので問題なく動きはするということでワーニングどまりになっているかと思われます 今のようなブログが主流になる前は素人webサイトが多く、タグの意味を無視して動けば良いってレベルのものが多かったりHTMLのバージョン違いもあったりといった経緯で結構柔軟に適切に良い感じに解釈して表示してくれます。もしも仕様通りにしか動かない(本来はこれが正しい)のがほとんどのブラウザの挙動であるならばワーニングではなくエラーになっていたかもしれません。
Eltk

2020/05/02 07:13

>len_souko様 そうなんですね。ブラウザによって無視してもらえる場合もあるんですね。 自分がコードを書く際は今後も気をつけたいと思います。
退会済みユーザー

退会済みユーザー

2020/05/02 09:25

> もともとVisual Studioで実行時にエラー(「開始タグに対応する終了タグがありません。」)(※ブラウザはEdge)が出て、 そんなことはないはず。p タグの入れ子ぐらいは Edge も許容範囲です。エラーなどは出ません。ホントに出たとすると別の問題です。 よく調べて、よく考えて、分からないところがあれば勉強して、それから質問するようにしてください。
Eltk

2020/05/02 11:32

>SurferOnWww様 わかりました。 以後気をつけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問