MVC Razor - 在没有Controller创建新模型的情况下从一些HTML将属性传递给模型

时间:2012-01-03 17:58:18

标签: asp.net-mvc razor

我是MVC的新手(继承了剃刀MVC网站)。

我正在尝试使用“关于我们”页面来处理选项卡样式 - 基本上是按钮,以轻弹内容。

我添加了以下构造函数和属性...

public class AboutModel
{
    public AboutModel(string selectedAboutTab)
    {
        SelectedAboutTab = selectedAboutTab;
    }
    private string _selectedAboutTab;
    public string SelectedAboutTab
    {
        get { return _selectedAboutTab ?? "about"; }
        set
        {
            _selectedAboutTab = value;
        }
    }

然后希望像这样使用HTML来更改标签...

    <a href="/About?selectedAboutTab=directors">directors</a>

但它似乎没有向构造函数传递任何内容。

我认为问题出在家庭控制器上......这是在主页上 - 它首先启动了AboutModel ......但是当我从'主页'导航到“关于我们”它的工作将完成!但是,每当我点击“关于我们”页面中的“关于”标签页时,它实际上会创建一个新模型。

这是家庭控制器上的一些代码。

    public virtual ActionResult About()
    {
        ViewBag.CurrentPage = MenuPages.About;
        return View(new AboutModel("about"));
    }

很抱歉我明显缺乏MVC知识!但有人可以告诉我能够填充SelectedAboutTab属性的最简单方法吗?

由于

2 个答案:

答案 0 :(得分:1)

您已经回答了自己的问题,但作为一般提示,请考虑使用网址助手而不是硬编码<a href />

@Html.ActionLink( "directors", "About", new { selectedAboutTab = "directors" } )

视图引擎将动态构建您的链接。

答案 1 :(得分:0)

我只需要将selectedAboutTab添加到Home Controller ...

    public virtual ActionResult About(string selectedAboutTab)
    {
        ViewBag.CurrentPage = MenuPages.About;
        return View(new AboutModel(selectedAboutTab));
    }