Asp.net mvc 2 在提交MVC上动态填充选择列表

Asp.net mvc 2 在提交MVC上动态填充选择列表,asp.net-mvc-2,dynamic,selectlist,Asp.net Mvc 2,Dynamic,Selectlist,这个项目差不多完成了。仅仅是一些松散的结尾这是一个地狱般的松散结尾,但仍然如此。 我需要使用jquery动态填充一个下拉列表或某种项目列表。现在我有两个div将从webservice中提取。这些Web服务将填充SelectItems。我希望能够在diva中按submit,然后生成此数据并将其拉回到我的视图中,并将其显示给用户以供其使用。。。b组也一样。如何使用Jquery实现这一点?我已经看到了一些教程,它们可以实现这个listId。更改以前的selectList。。。我可以用提交按钮来支付吗?

这个项目差不多完成了。仅仅是一些松散的结尾这是一个地狱般的松散结尾,但仍然如此。 我需要使用jquery动态填充一个下拉列表或某种项目列表。现在我有两个div将从webservice中提取。这些Web服务将填充SelectItems。我希望能够在diva中按submit,然后生成此数据并将其拉回到我的视图中,并将其显示给用户以供其使用。。。b组也一样。如何使用Jquery实现这一点?我已经看到了一些教程,它们可以实现这个listId。更改以前的selectList。。。我可以用提交按钮来支付吗?我需要提交按钮的方式,因为用户将输入一些数据,以帮助缩小他的选择。。。你有什么建议吗?我将继续研究这一点,如果我偶然发现一种方法,我会让你知道

更新 这是我的一些视图代码

<%using (Html.BeginForm("AddPatient", "PatientACO", new { @PopID = Model },  
FormMethod.Post, new { name = "addPat", id = "addPatiD" }))
{ %>

 <div style="float: right; width: 450px; height: 337px;">
<%

  string[] paths = new string[13];
  paths[0] = "FirstName";
  paths[1] = "LastName";
  paths[2] = "DateOfBirth";
  paths[3] = "City";
  paths[4] = "State";
  paths[5] = "Country";
  paths[6] = "Postal Code";
  paths[7] = "deathIndicator";
  paths[8] = "email";
  paths[9] = "gender";
  paths[10] = "language";
  paths[11] = "NextOfKin";
  paths[12] = "Phone";
 %>
 Other Criteria<br />
 <table>

 <%foreach (string name in paths)
 {
  if ((name.CompareTo("MRN") != 0) || (name.CompareTo("DateOfBirth") != 0) ||          name.CompareTo("DischargeDateTime") != 0) || (name.CompareTo("AdminDate") != 0) || (name.CompareTo("PCPAppointmentDateTime") != 0))
  {
      //Response.Write("<p>");
      %><%=Html.TextBox(string.Format("{0}", name), null)%><%
      Response.Write("<br />");
  }
  if ((name.CompareTo("DateOfBirth") == 0) || (name.CompareTo("DischargeDateTime") == 0) || (name.CompareTo("AdminDate") == 0) || (name.CompareTo("PCPAppointmentDateTime") == 0))
  {
      //Response.Write("<p>");
      %><%=Html.TextBox(string.Format("{0}", name), (name.Contains("Date") ?   DateTime.Today.ToString() : string.Empty), new { @class = "datepicker" })%><%
      Response.Write("<br />");
     }
  }  
  %>
 </table>
 <input id="DemoSubmit" type="submit" value="Search By Other" class="button"   style="float: left; width:auto;"/>
  </div>

  <%
  }%>
    <% using (Html.BeginForm("SearchByMRN", "PatientACO", new { @PopID = ViewData["POPID"]}, FormMethod.Post))%>
   <%{%>
<div style="float: left; width: 350px;">
<table>
     Patient MRN   
   <%:Html.TextBox("Identifier Value", "Enter Value", null)%> 
   <%  %>
   <%:Html.DropDownList("MRN", (List<SelectListItem>)ViewData["MRNDROPDOWNLIST"])%>
   <input id="MRNSubmit" type="submit" value="Search By MRN" class="button"                  style="float:    left; width:auto;" />
    </table>
   </div>
   <select id="PatientListToAdd" name="patList" disabled="disabled">
   </select>  
   <div>
   </div>
   <%   } %>
这将是我的大部分视图方法代码,其中一些代码被保留,因为它并不重要。 注意,我根据上面的数组生成表单输入字段。请注意,我有两个嵌套的div。一个div有一个submit,另一个div有一个submit。第一个div将具有下拉列表。。。该列表由一个简单的SelectItems列表填充,我在控制器中填充该列表并将其传递给视图。。。我有一些代码可以从服务中获取一些数据,现在我如何才能将其返回到此视图并填充下拉列表或选择框?我想用Jquery来做,但是如果我必须用其他方式做的话,那就好了。如果你们有关于这个主题的任何教程,那就太棒了

更新2 从控制器获取JSON数据

好的,我正在从控制器获取JSON数据。。。现在我只需要用它填充我的选择框

    <input id="MRNSubmit" type="submit" value="Search By MRN" class="button" style="float: left; width:auto;" />
我的选择框:

    <select id="PatientListToAdd" name="patList" disabled="disabled"></select>
尝试填充选择框的JavaScript函数:

    $(function () {
    $("#MRNSubmit").click(function (e) {
        e.preventDefault();
        var data = [];
        $.getJSON("/PatientACOController/SearchByDemographic", null, function (data) {
            data = $.map(data, function (item, a) {
                return "<option value=" + item.Value + ">" + item.Text + "</option>";
            });
            $("#PatientListToAdd").html(data.join(""));
        });
    });
});
这是不工作的,被说。。。有什么问题吗

更新3

不确定ListBox是否是最佳选择


一开始似乎无法使ListBox不可见。看起来它希望在页面加载后立即绑定到数据。。。那对我来说是行不通的。也许我应该切换到dropDownList…

首先,第一个选择列表:

    <td>
        <div class="editor-field">

            @{
var listItems = new List<SelectListItem>();

listItems.Add(new SelectListItem { Text = "", Value = "" });
listItems.Add(new SelectListItem { Text = "Routine", Value = "R" });
listItems.Add(new SelectListItem { Text = "Repeat", Value = "P" });
listItems.Add(new SelectListItem { Text = "Confirmation", Value = "C" });
listItems.Add(new SelectListItem { Text = "Triggered", Value = "T" });
listItems.Add(new SelectListItem { Text = "Assessment", Value = "A" });
listItems.Add(new SelectListItem { Text = "Special", Value = "S" });

            }

            @Html.DropDownListFor(m => m.SampType, listItems, new { @style = "height:28px;" })

        </div>
    </td>
现在填充第二个下拉列表。第一个selectlist中的样本类型选择使用JSON调用控制器并返回一个JSON对象,该对象填充了样本位置的值,然后循环填充第二个下拉列表。这对我来说是可行的,可能您需要的唯一代码就是最后一个javascript函数populateSPIDDropDown

 //Fill WSFSPID DROPDOWN WITH APPROPRIATE LOCATIONS FOR SAMPLE TYPE
     function handleGetSamplePointListResponse(responseObject) {
         populateSPIDDropDown("WSF", responseObject);
     }

     function populateSPIDDropDown(dropdownId, jsonObject) {
         //alert("inside populate SPIDDropDown");

         //remove all items from list
         $('#' + dropdownId).find('option').remove();

         //add the options in for this list
         $.each(jsonObject, function () {
             $('#' + dropdownId)
          .append($('<option>', { value: this.Value })
          .text(this.Text));
         });
     }

你是说层叠下拉列表还是什么?是的。我将有一个下拉列表为一个提交。但我也需要用户的输入。这就是为什么我会有一个提交按钮。提交时可以这样做吗?可以。一切皆有可能。如果你更新你的问题并提供更多关于屏幕外观和输入字段的详细信息,可能会更容易帮助你。好的。。。到现在为止,一直都还不错。。。我正在将JSON数据返回到我的浏览器。。。我怎样才能把它放到一个选择框里???我有一个submit按钮id MRNSSubmit我有一个SelectIDpatientListToAdd,我有一个javaSript函数。。。要填充该文件,请选择。。。我是一个完全不懂JavaScript的人。。。但是我一点一点的好起来了。。。让我更新我的帖子…伙计们,我在这里被难住了。。。有没有关于如何让我的选择填充的想法?
 //Fill WSFSPID DROPDOWN WITH APPROPRIATE LOCATIONS FOR SAMPLE TYPE
     function handleGetSamplePointListResponse(responseObject) {
         populateSPIDDropDown("WSF", responseObject);
     }

     function populateSPIDDropDown(dropdownId, jsonObject) {
         //alert("inside populate SPIDDropDown");

         //remove all items from list
         $('#' + dropdownId).find('option').remove();

         //add the options in for this list
         $.each(jsonObject, function () {
             $('#' + dropdownId)
          .append($('<option>', { value: this.Value })
          .text(this.Text));
         });
     }