Asp.net mvc 2 我可以访问asp.net mvc中控制器操作中的母版页下拉列表值吗

Asp.net mvc 2 我可以访问asp.net mvc中控制器操作中的母版页下拉列表值吗,asp.net-mvc-2,Asp.net Mvc 2,我有一个母版页,其中显示用户可以访问的组。现在,我想在许多控制器中获取其选定值,以便和记录一起保存。我想知道在asp.net mvc 2中是否可能,如果不可能,那么解决方法是什么我希望我理解您的问题,因为没有提供代码示例。 您可以在包含显示组的页面上使用viewmodel执行此操作。另一个选项是在发布页面时从FormCollection获取值 例如: public ActionResult MyAction(MyViewmodel viewModel) { //value from your v

我有一个母版页,其中显示用户可以访问的组。现在,我想在许多控制器中获取其选定值,以便和记录一起保存。我想知道在asp.net mvc 2中是否可能,如果不可能,那么解决方法是什么

我希望我理解您的问题,因为没有提供代码示例。 您可以在包含显示组的页面上使用viewmodel执行此操作。另一个选项是在发布页面时从FormCollection获取值

例如:

public ActionResult MyAction(MyViewmodel viewModel)
{
//value from your viewmodel, strongtype
var value = viewModel.group;
}


如果你对这个答案不满意,那么请在你的问题中说得更清楚,我会尽力进一步帮助你。

你正在尝试的是可能的,并且有不同的技术来实现它。最佳方法取决于您如何调用控制器操作。无论您是使用普通超链接、提交标准
还是使用AJAX。因此,如果您使用的是标准操作链接,那么可以添加一些javascript,绑定到每个链接的onclick事件,并添加组的选定值。例如:

$(function() {
    $('a').click(function() {
        // everytime a link is clicked
        // add the value of the selected group to the url
        var selectedGroup = $('#IdOfYourDdl').val();
        if (this.href.indexOf('?') > 0) {
            window.location = this.href + '&selectedGroup=' + selectedGroup;
        } else {
            window.location = this.href + '?selectedGroup=' + selectedGroup;
        }
        // cancel the default action as it doesn't contain the selectedGroup
        // parameter in the request
        return false;
    });
});
在控制器操作中,可以使用以下附加参数:

public ActionResult Foo(string selectedGroup)
{
   ...
}
另一个例子是,如果使用AJAX,则可以在母版页中设置默认数据,以确保下拉列表的值将随正在执行的每个AJAX请求一起发送:

$.ajaxSetup({
    data: { selectedGroup: $('#IdOfYourDdl').val() }
});
现在,无论何时向服务器发送AJAX请求:

$.get('/foo', { someParam: 'someValue' }, function(result) {

});

将发送以下请求:
/foo?someParam=someValue&selectedGroup=123
,这样您就可以在控制器操作中获取所选组的值。

只要您的下拉列表是所提交的
的后代,它将遵循标准,这意味着您可以将其作为参数包含在操作中。确保下拉列表的
name
属性与操作参数的名称匹配

最终呈现的HTML:

<form action="http://.../MyAction" method="post">
  <select name="dropDownList">
    <option value="a">Option A</option>
    <option value="b">Option B</option>
    ...
  </select>
  ...
</form>

方案A
方案B
...
...
控制器:

[HttpPost]
public ActionResult MyAction(string dropDownList, MyActionModel model)
{
    // dropDownList = value attribute of selected <option>
    ...
}
[HttpPost]
公共操作结果MyAction(字符串下拉列表,MyActionModel模型)
{
//dropDownList=所选对象的值属性
...
}
[HttpPost]
public ActionResult MyAction(string dropDownList, MyActionModel model)
{
    // dropDownList = value attribute of selected <option>
    ...
}