我正在使用HttpPost将一些数据(复选框,字符串)从我的视图传递给控制器。 除了那些数据之外,我还需要传递用户选择的2个下拉列表的值,这2个没有与模型绑定,它们只是在视图中。如何做到这一点?
在视图中 - >
加载月份: 一月 二月 损伤 四月 可以 六月 七月 八月 九月 十月 十一月 十二月 <div id="loadyear">
Load Year :
<select name="years" class="YearDropDown">
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
</div>
我和其他绑定到模型的项目一起使用。当我使用form-begin和HttpPost方法时,我能够从控制器中检索它们,但是如何传递loadmonth和loadyear下拉列表以便我可以在控制器中看到它们的值?
答案 0 :(得分:0)
请尝试此更改。我相信它会奏效。
您可以为下拉列表设置强类型隐藏字段。在下拉更改事件中将其值放在隐藏字段中。休息模型和控制器将处理。你需要一点点javascript / jQuery。我总是喜欢jQuery。
注意:您的隐藏字段必须与您在视图中使用的模型中的属性强绑定。
public class MyModel
{
// your other stuff
public string DropDownValue { get; set; }
}
<div id="loadyear">
Load Year :
<select name="years" class="YearDropDown">
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
@Html.HiddenFor(x => x.DropDownValue)
</div>
$(function(){
$('#loadyear select').change(function(){
$('#DropDownValue').val($(this).val());
});
});
[HttpPost]
public ActionResult ViewName(MyModel model)
{
return View(model);
}
当您对此视图的HttpPost
操作发现时,您实际上可以在调试器中看到属性的值。
这也可以通过ajax完成,但这将节省对代码的额外调用并为其编写一些代码。如果你真的想用ajax这样做,那么请发表评论。 希望它有所帮助:)
答案 1 :(得分:0)
只要字段在表单中,您就可以使用请求访问它们。它们不会通过MVC绑定到任何模型,但是值将出现在拍摄中。使用Controller.Request
属性访问它们。