我的asp.net MVC2视图中有一个下拉列表,如下所示:
<% using(Html.BeginForm("temp","Settings")){ %>
<%= Html.DropDownList("drpFields", new SelectList(Model.Fields, "FieldID", "NiceName", whiteout.FieldID))
}
%>
我希望将下拉列表中的选定值从视图传递给控制器操作。我该如何修改:
<a class="icon-button-success" href='<%: Url.Action("EditWhiteOut", "Settings", new {FieldId = 1}) %>'>
<img src='<%: Url.Content("~/static/Images/update.png") %>' alt="Update" />
</a>
我想将下拉列表的选定值传递给FieldId
。
答案 0 :(得分:0)
如果您愿意使用Ajax,如果您想使用jQuery.ajax
,则可以避免使用该表单。您可能希望为锚点赋予其ID属性的值(下面的示例仅使用其类属性)
但是,既然你想做一个常规的回发,你会想要使用Html.BeginForm
的另一个重载,这样你就可以为表单指定一个ID属性(如果你不熟悉,我指定了参数名称)这个超载)
Html.BeginForm(actionName: "temp", controllerName: "Settings",
method: FormMethod.POST, htmlAttributes: new { id = "MyForm" })
用于使您的链接提交表单的jQuery将创建一个标准的提交。因此,只要您的选择列表具有名称属性,它的值就会包含在帖子的有效负载中。
$(function () {
$('.icon-button-success').click(function (e) {
$('#MyForm').submit();
// you might not need preventDefault, but I can't remember if
// it will create a second post or not
e.preventDefault();
});
});
如果您想要进行重定向(使用$.ajax
方法),您可以随时在window.location.href='redirect/link';
调用中的success
函数内$.ajax
答案 1 :(得分:0)
然后呢 如果没有启用js,这将触发表单的javascript提交并提供按钮
<% using (Html.BeginForm(youraction)) {%>
<select name='myfield' onchange='this.form.submit()'>
<option .... >
...
</select>
<noscript><input type="submit" value="Submit"></noscript>
<%}%>
或使用您的代码: 使用jquery更新提交值的值,在这种情况下 的javascript:
var link = Url.Action("EditWhiteOut", "Settings");
jquery的
function toCallOnChange(){
var linkParameter = $("#id of object").val();
$("a.icon-button-success").attr("href", link+"\"+linkParameter ); //which will overwrite default value to current link
}
<a class="icon-button-success" href='#'>
<img src='<%: Url.Content("~/static/Images/update.png") %>' alt="Update" />
</a>