asp.net mvc 4.5.1根据另一个字段设置字段默认值

时间:2015-12-17 07:15:26

标签: asp.net asp.net-mvc forms

我的表单包含两个字段.... Owner_IDAQ_Manager。我想将AQ_Manager字段默认设为名称,具体取决于输入Owner_ID字段的内容。例如,如果用户输入"公司A"进入Owner_ID字段,我想将AQ_Manager字段默认为" John Smith"。有没有办法让我做到这一点?

型号信息:

[DisplayName("Owner ID")]
public string Owner_ID { get; set; }
[DisplayName("AQ Manager")]
public string AQ_Manager { get; set; }

查看:

<div class="form-group">
    @Html.LabelFor(model => model.Owner_ID, new { @class = "control-label col-md-2 required CreateEditFieldNamesSpan" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.Owner_ID (SelectList)ViewBag.VBProjectOwnerList, "--Select Owner--")
        @Html.ValidationMessageFor(model => model.Owner_ID)
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(model => model.AQ_Manager, new { @class = "control-label col-md-2 CreateEditFieldNamesSpan" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.AQ_Manager)
        @Html.ValidationMessageFor(model => model.AQ_Manager)
    </div>
</div>

2 个答案:

答案 0 :(得分:1)

根据您的评论,您已指出@media (min-width: 768px) and (max-width: 991px){ //STYLE STUFF } 只有3个选项,因此您可以向视图模型添加属性以存储关联的默认值(例如)Owner_ID并在GET中方法,初始化集合并添加3个值(与3个选项的顺序相同)

public List<string> DefaultManagers { get; set; }

并在视图中包含以下脚本

model.DefaultManagers = new List<string>{ "John", "Bob", "Jim" };
return View(model);

将创建一个包含3个值的javascript数组。然后处理下拉列表的var defaults = @Html.Raw(Json.Encode(Model.DefaultManagers)) 事件并更新文本框

.change()

另一种选择,如果视图更复杂并且您需要更新多个输入,则可以使用ajax来调用返回所需结果的控制器方法

$('#Owner_ID').change(function() {
  var index = $(this).children('option:selected').index();
  $('#AQ_Manager').val(defaults[index]);
});

并且控制器方法将是

var url = '@Url.Action("GetDefaults")';
$('#Owner_ID').change(function() {
  $.getJSON(url, { id: { $(this).val() }, function(data) {
    $('#AQ_Manager').val(data.DefaultManager);
    $(anotherElement).val(data.SomeOtherPropery);
  });
});

答案 1 :(得分:0)

根据您的问题,您要在&#39; Owner_Id&#39;中输入值。领域。我们可以轻松地在AQ_Manager&#39;中设置默认值。字段使用java脚本或JQuery。语法更改取决于您的字段类型