【问题标题】:C# MVC2 - Setting a label on Master Page from a Content PageC# MVC2 - 从内容页面在母版页上设置标签
【发布时间】:2010-10-18 23:21:00
【问题描述】:

我有一个下拉列表填充在这样的内容页面上

<%: Html.DropDownListFor(x => x.SelectedName, Model.NameList)  %>
<input name="btnGo" type="submit" value="GO"  />

当用户选择名称并单击 GO 按钮时,我有一个 HTTP 操作来为我提供名称

[HttpPost]
public ActionResult SelectName(string SelectedName)
{
...
}

现在我想使用该名称并使用 SelectedName 在 master 上设置一个标签 在 MVC2 中这是如何实现的?

【问题讨论】:

    标签: c# asp.net-mvc-2


    【解决方案1】:

    请记住,这不是 Web 表单。 :)

    换句话说,您不能在 Controller 操作中执行此操作:

    someLabel.Text = "foo"
    

    最好的办法是把你想要的文本放在 ViewData 中:

    [HttpPost]
    public ActionResult SelectName(string SelectedName)
    {
       ...
       ViewData["SelectedText"] = "some text";
       return View();
    }
    

    然后将标签设置为您的主视图中的标签:

    <span><%: ViewData["SelectedText"] %></span>
    

    【讨论】:

    • 正确,没有我们在 WebForms 中习惯的控制层次结构
    • @BurningIce - 这是一件好事。 :) 我也很高兴告别在页面生命周期中控制不同事件的需要。
    • @rpm 我想说一切都有优点和缺点。我个人喜欢 web 表单和控件层次结构,但我见过太多的程序员不明白并滥用它,然后 MVC 可能对他们更好。
    • @BurningIce - 完全同意。那些滥用它的程序员很可能来自 WinForms 背景,因此忘记遵守 REST/HTTP 原则。
    • 谢谢大家。我会试试这个。我是 MVC 新手。
    猜你喜欢
    • 2010-11-07
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 2015-08-15
    相关资源
    最近更新 更多