gpt4 book ai didi

c# - MVC : pass parameter to view?

转载 作者:可可西里 更新时间:2023-11-01 07:50:20 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com