MVC新手问题:
我正在获取一个形式为 go/{mainnav}/{subnav}
的 URL,我已成功将其路由到 GoController
类,方法:
public ActionResult Index(string mainnav, string subnav) {
return View();
}
到目前为止,还不错。但现在我希望 View 根据 mainnav 或 subnav 的值返回不同的 HTML。具体来说,在一个 javascript block 中,我想包含以下行:
myobj.mainnav = [value of mainnav parameter];
并且,仅当 subnav 不为 null 或为空时:
myobj.subnav = [value of subnav parameter];
如何将这些参数传递给没有代码隐藏的 aspx 页面?
最佳答案
您使用 ViewModel
类来传输数据:
public class IndexViewModel
{
public string MainNav { get; set; }
public string SubNav { get; set; }
public IndexViewModel(string mainnav, string subnav)
{
this.MainNav = mainnav;
this.SubNav = subnav;
}
}
你的action方法就出来了
public ActionResult Index(string mainnav, string subnav)
{
return View(new IndexViewModel(mainnav, subnav));
}
这意味着您的 View 必须是强类型的:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<YourNameSpace.IndexViewModel>" %>
在你看来,你输出的数据是这样的:
myobj.mainnav = <%: Model.MainNav %>;
如果您使用 MVC3,另一种解决方案是使用动态 ViewBag
:
public ActionResult Index(string mainnav, string subnav)
{
ViewBag.MainNav = mainnav;
ViewBag.SubNav = subnav;
return View();
}
将在页面中这样访问:
myobj.mainnav = <%: ViewBag.MainNav %>;
但是,我建议您继续阅读 unobtrusive javascript看看您是否可以改进您的设计来避免这个特定问题。
关于c# - MVC : pass parameter to view?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4816869/