【问题标题】:Ajax call to a controller对控制器的 Ajax 调用
【发布时间】:2014-05-20 09:32:19
【问题描述】:

我正在使用 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-b​​egin 和 HttpPost 方法时,我可以从控制器中检索它们,但是如何传递 loadmonth 和 loadyear 下拉列表以便我可以在控制器中看到它们的值?

【问题讨论】:

  • 请提供一些您目前尝试过的代码sn-p。
  • 我认为这将通过 AJAX 调用来完成,但我不知道如何通过 AJAX 调用将其传递给控制器​​

标签: asp.net-mvc


【解决方案1】:

例如,请尝试此更改。我相信它会起作用。

您可以为下拉菜单设置强类型隐藏字段。在下拉更改事件中,将其值放在隐藏字段中。休息模型和控制器将处理。你需要一点 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 来做这件事,那么请发表评论。 希望对你有帮助:)

【讨论】:

  • 我已经在使用 HttpPost 做其他事情了,我可以将它们添加到这个 HttpPost 中吗?
  • 以及 ,例如如果年份是 2012 年,我想发表评论。如何从控制器访问该下拉菜单?
  • 当下拉的更改事件触发(通过 jquery)时,您选择的任何值都将更新隐藏字段,如果它们出现在视图中,您的模型将具有每个属性的值。它是如此简单。那有什么问题呢?
  • 我也不能使用@model,因为我将模型的 IList 传递给我的视图,所以我想我必须使用 ajax,我不想将此下拉框绑定到模型。
【解决方案2】:

只要字段在表单中,您就可以使用请求访问它们。它们不会通过 MVC 绑定到任何模型,但值将呈现以供使用。使用Controller.Request 属性访问它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2021-10-05
    相关资源
    最近更新 更多