web-dev-qa-db-ja.com

ControllerからView ASP.Net MVCにHtml文字列を渡す

これは、コントローラーから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として表示される場所。 ありがとう

19
Pratik Bhoir

コントローラーアクションで:

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)
45

コントローラーの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>
6
Adil

最適なアプローチは、部分ビューを作成し、それによって返される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>
2
Ehsan Sajjad

ビューでViewBag.YourFieldまたはViewData["YourStringName"]を使用して取得できます。 @@ViewBag.YourFieldのように、@ViewData["YourStringName"]を前に置きたい場所に配置してください。

1
user3383479

コントローラ

 ViewBag.HTMLData = HttpUtility.HtmlEncode(htmlString);  

見る

@HttpUtility.HtmlEncode(ViewBag.HTMLData)
1