将控制器参数传递给视图的最佳方法是什么?该参数与任何模型无关,因此无法进行强类型视图。
控制器:
public ActionResult DisplayParam(string id, string name)
{
return View();
}
查看:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
&lt;%@ Import NameSpace =“System.IO”%&gt; &lt;%@ Import NameSpace =“System”%&gt; &lt;%@ Import NameSpace =“System.Data”%&gt; &lt;%@ Import NameSpace =“System.Web”%&gt; &lt;%@ Import NameSpace =“System.Text”%&gt; &lt;%@ Import Namespace =“MY.Controllers”%&gt;
控制器参数
<div>
Controller Parameter id: @id
Controller Parameter name: @name
</div>
答案 0 :(得分:1)
最好的方法是使用视图模型:
public class MyViewModel
{
public string Id { get; set; }
public string Name { get; set; }
}
然后让控制器操作填充此视图模型并将其传递给视图,如下所示:
public ActionResult DisplayParam(string id, string name)
{
var model = new MyViewModel
{
Id = id,
Name = name
};
return View(name);
}
最后,您可以将视图强烈输入此视图模型并使用该信息显示它:
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage<AppName.Models.MyViewModel>"
%>
<div>
Controller Parameter id: <%= Html.DisplayFor(x => x.Id) %>
Controller Parameter name: <%= Html.DisplayFor(x => x.Name) %>
</div>
或者如果您使用的是Razor视图引擎:
@model AppName.Models.MyViewModel
<div>
Controller Parameter id: @Html.DisplayFor(x => x.Id)
Controller Parameter name: @Html.DisplayFor(x => x.Name)
</div>