1

このhtmlページを文字列として書き直す必要があります。

 <h1>Report @ViewData["reviewId"]</h1>
 <table width="1000">
 @foreach (var group in Model.GroupBy(item => item.Parent_Group_Name))
 {
 <tr bgcolor="gray">
    <td><b>@group.Key</b></td>
 </tr>
     foreach (var line in group)
     { 
      <tr>
          <td><b>@line.Child_Group_Name </b></td>
      </tr>
      <tr>
          <td width="100%"><b>Question:</b> @String.Format("{0}. {1}",line.Question_Order,line.Question_Label)</td>
      </tr>
      <tr>
          <td width="100%"><b>Answer:</b> @line.Question_Answer</td>
      </tr>
        <tr>
       <td valign=right>
            <table width="100%" >
                <thead bgcolor="BDBDBD">Comments</thead>
                @foreach (var comment in line.Comments)
                { 
                  <tr>
                      <td width="100%"><font size="3" color=302F2F>@comment.Comment_Text</font></td>
                  </tr>
                      <tr>     
                        <td width="100%"><font size="2" color=302F2F>by @comment.Comment_User...[@comment.Comment_Date.ToShortDateString()] </font></td>
                  </tr>
                }
            </table><hr />      
       </td>
        </tr>        
     }

 }
 </table>

文字列ビルダーを使用してこのすべてのHTMLをラップすることを考えていましたが、より効率的またはエレガントな方法はありますか?

4

2 に答える 2

0

そのHTMLコードを別のビュー内の文字列として必要な場合HtmlHelper.Partial()は、文字列値を返すため、メソッドを使用できます。

MVCビューの外部でそれが必要な場合は、ここで説明するように、はるかに複雑なものが必要です:http ://www.west-wind.com/weblog/posts/2012/May/30/Rendering-ASPNET-MVC-Views- to-文字列

于 2013-03-07T14:36:46.430 に答える
0

私が使用する方法は次のとおりです。

public static string RenderPartialToString(Controller controller, string viewName, object model)
{

    controller.ViewData.Model = model;

    using (StringWriter sw = new StringWriter())
    {
        ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
        ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.GetStringBuilder().ToString();
    }
}
于 2013-03-07T14:39:30.910 に答える