これは、コントローラーからMVCのビューにHtml Stringブロックを渡すための最良の方法です。ページの読み込み時にそのhtmlブロックを表示したいです。ありがとうございました。任意のHTML、たとえば
<table style="width:300px">
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
これを文字列としてコントローラーからビューに渡したいです。 HTMLとして表示される場所。 ありがとう。
コントローラーアクションで:
ViewBag.HtmlStr = "<table style=\"width:300px\"><tr><td>Jill</td><td>Smith</td> <td>50</td></tr><tr><td>Eve</td><td>Jackson</td><td>94</td></tr></table>";
あなたの見解:
@Html.Raw(ViewBag.HtmlStr)
コントローラーのhtmlをViewBagに割り当て、ViewのViewBagにアクセスして、htmlである値を取得できます。
コントローラー
ViewBag.YourHTML = htmlString;
表示
<div> @ViewBag.YourHTML </div>
notからhtmlをcontrollerからViewに渡すよりも、オブジェクトまたはオブジェクトのコレクションをViewに渡す方がよい(強く入力するview)およびViewの責任であるViewでhtmlをレンダリングします
コントローラー
public ActionResult YourView()
{
//YourCode
return View(entities.yourCollection.ToList());
}
Veiw
<table style="width:300px">
foreach (var yourObject in Model)
{
<tr>
<td>@yourObject.FirstName</td>
<td>@yourObject.LasttName</td>
<td>@yourObject.Amount</td>
</tr>
}
</table>
最適なアプローチは、部分ビューを作成し、それによって返されるhtmlをコンテナdiv内の親ビューに追加することです。
メインビューで次のようにします。
<div>
@{
Html.RenderAction("youraction","yourcontroller")
}
</div>
あなたのアクションでこれを行います:
public ActionResult youraction()
{
return View();
}
そしてあなたの部分的なビュー:
@{
Layout = null;
}
<table style="width:300px">
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
ビューでViewBag.YourField
またはViewData["YourStringName"]
を使用して取得できます。 @
や@ViewBag.YourField
のように、@ViewData["YourStringName"]
を前に置きたい場所に配置してください。
コントローラ
ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);
見る
@HttpUtility.HtmlEncode(ViewBag.HTMLData)