Asp.net mvc 对控制器的Ajax调用

Asp.net mvc 对控制器的Ajax调用,asp.net-mvc,Asp.net Mvc,我正在使用HttpPost将一些数据(复选框、字符串)从视图传递到控制器。 除了这些数据,我还需要传递用户选择的2个下拉列表的值,这2个列表不与模型绑定,它们只是在视图中。如何操作 在视图中-> 装货月份: 简 二月 破坏 四月 也许 六月 七月 八月 九月 十月 十一月 12月 装载年份: 2012 2013 2014 我有这个和其他绑定到模型的项目。当我使用form begin和HttpPost方法时,我可以从控制器中检索它们,但是如何传递loadmonth和loadyear下拉列表,以

我正在使用HttpPost将一些数据(复选框、字符串)从视图传递到控制器。 除了这些数据,我还需要传递用户选择的2个下拉列表的值,这2个列表不与模型绑定,它们只是在视图中。如何操作

在视图中->

装货月份: 简 二月 破坏 四月 也许 六月 七月 八月 九月 十月 十一月 12月

装载年份:
2012
2013
2014

我有这个和其他绑定到模型的项目。当我使用form begin和HttpPost方法时,我可以从控制器中检索它们,但是如何传递loadmonth和loadyear下拉列表,以便我可以在控制器中看到它们的值?

例如,请尝试此更改。我相信它会奏效

您可以为下拉列表设置强类型隐藏字段。在下拉列表中,更改事件将其值放入隐藏字段。其余部分由模型和控制器处理。您需要一点javascript/jQuery。我总是喜欢

注意:隐藏字段必须与视图中使用的模型中的属性进行强绑定

模型 看法 控制器 当此视图的
HttpPost
操作点击时,实际上可以在调试器中看到属性的值

这也可以通过ajax实现,但这将节省对代码的额外调用,并为相同的代码编写一些代码。如果你真的想用ajax做这件事,请发表评论。
希望有帮助:)

只要字段的格式符合您可以使用请求访问它们的格式。它们不会通过MVC绑定到任何模型,但会显示值以供获取。使用
控制器。请求
属性来访问它们。

请提供一些您迄今为止尝试过的代码片段。我认为这将通过AJAX调用来完成,但我不知道如何通过AJAX调用将其传递给控制器我已经在使用HttpPost进行一些其他操作,我可以将它们添加到此HttpPost?那么,例如,如果年份是2012年,我想发表一些评论。如何从控制器访问该下拉列表?当下拉列表的更改事件触发(通过jquery)时,您选择的任何值都将更新隐藏字段,并且您的模型将具有每个属性的值(如果它们存在于视图中)。就这么简单。那么问题是什么呢?我也不能使用@model,因为我正在将一组模型传递给我的视图,所以我想我必须使用ajax,我不想将这个下拉框绑定到模型。
    <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>
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);
}