将控制器参数传递给视图

时间:2011-07-12 17:30:32

标签: asp.net-mvc uiviewcontroller viewdata

将控制器参数传递给视图的最佳方法是什么?该参数与任何模型无关,因此无法进行强类型视图。

控制器:

        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>

1 个答案:

答案 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>