Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 在dropdownlist更改事件上加载部分表单_Jquery_Asp.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Jquery 在dropdownlist更改事件上加载部分表单

Jquery 在dropdownlist更改事件上加载部分表单,jquery,asp.net,asp.net-mvc,asp.net-mvc-3,Jquery,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我有一个下拉列表的车牌,其中最后一项是新的车牌。默认情况下,该表单不会显示新车牌的“新车牌表单字段”文本框以及车牌所在州/省的下拉列表 如何根据新车牌的选择显示表格 到目前为止,我已经创建了一个局部视图: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Namespace.ViewModels.ProfileMemberViewModel>" %> <table cellspaci

我有一个下拉列表的车牌,其中最后一项是新的车牌。默认情况下,该表单不会显示新车牌的“新车牌表单字段”文本框以及车牌所在州/省的下拉列表

如何根据新车牌的选择显示表格

到目前为止,我已经创建了一个局部视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Namespace.ViewModels.ProfileMemberViewModel>" %>
<table cellspacing="2" cellpadding="2" width="100%" border="0" align="left">
<tr>
    <td>
        <%=Html.LabelFor(model => model.NewLicensePlate.LicensePlate, new { @class = "inputLabel" })%>
    </td>
    <td>
        <%=Html.TextBoxFor(model => model.NewLicensePlate.LicensePlate, new { @class = "inputField" })%>
    </td>
</tr>
<tr>
    <td>
        <%=Html.LabelFor(model => model.NewLicensePlate.PlateState, new { @class = "inputLabel" })%>
    </td>
    <td>
        <%=Html.DropDownListFor(model => model.NewLicensePlate.PlateState, Model.NewLicensePlate.PlateStates, new { @class = "inputField" })%>
    </td>
</tr>
父窗体:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Paysite.Providers.ViewModels.ProfileMemberViewModel>" %>
<% using (Html.BeginForm("Confirm", "Profile", FormMethod.Post, new { @id = "Profile-form" }))
   {%>
...
<tr>
    <td>
        <%=Html.LabelFor(model => model.Member.LicensePlate, new { @class = "inputLabel" })%>
        <br />
        <br />
        <span class="small">(To add, select "New License Plate")</span>
    </td>
    <td>
        <%=Html.DropDownListFor(model => model.Member.LicensePlate, Model.Member.LicensePlates, new { @class = "inputField" })%>
    </td>
</tr>
</table>
<div id="NewLicensePlate">            
</div>
...
<%
   } %>
$("#Member_LicensePlate").change(function () {
  var selectedPlate = $("#Member_LicensePlate").val();
  if (selectedPlate == "New License Plate") {
    $("#NewLicensePlate").load('<%= Url.Action("NewLicensePlate") %>');
  } else {
    $('#NewLicensePlate').empty();
  }
});
父窗体中的jQuery:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Paysite.Providers.ViewModels.ProfileMemberViewModel>" %>
<% using (Html.BeginForm("Confirm", "Profile", FormMethod.Post, new { @id = "Profile-form" }))
   {%>
...
<tr>
    <td>
        <%=Html.LabelFor(model => model.Member.LicensePlate, new { @class = "inputLabel" })%>
        <br />
        <br />
        <span class="small">(To add, select "New License Plate")</span>
    </td>
    <td>
        <%=Html.DropDownListFor(model => model.Member.LicensePlate, Model.Member.LicensePlates, new { @class = "inputField" })%>
    </td>
</tr>
</table>
<div id="NewLicensePlate">            
</div>
...
<%
   } %>
$("#Member_LicensePlate").change(function () {
  var selectedPlate = $("#Member_LicensePlate").val();
  if (selectedPlate == "New License Plate") {
    $("#NewLicensePlate").load('<%= Url.Action("NewLicensePlate") %>');
  } else {
    $('#NewLicensePlate').empty();
  }
});
视图模型:

public class ProfileMemberViewModel
{
    public ExistingMemberViewModel Member { get; set; }
    public NewLicensePlateViewModel NewLicensePlate { get; set; }
}

public class NewLicensePlateViewModel
{
    [Display(Name = "License Plate")]
    public string LicensePlate { get; set; }

    [Display(Name = "Province/State")]
    public string PlateState { get; set; }

    public IEnumerable<SelectListItem> PlateStates { get; set; }
}
控制器操作:

public ActionResult NewLicensePlate()
{
    var model = new ProfileMemberViewModel();
    model.NewLicensePlate = new NewLicensePlateViewModel();

    DataSet statesDataSet = _statesRepo.GetStates();

    model.NewLicensePlate.PlateStates =
            Enumerable.Select(statesDataSet.Tables[0].AsEnumerable(), x => new SelectListItem
        {
            Text = x.Field<string>("NAME"),
            Value = x.Field<double>("ID").ToString()
        });

    return PartialView("NewLicensePlate", model);
}

当我从父级从发布到公共ActionResult ConfirmProfileMemberViewModel模型时,model.NewLicensePlate未获得绑定,它为null。我有什么地方做错了吗?我不确定这是不是最好的方法

我认为最简单的方法是将所有字段放在相同的父窗体中。隐藏新板的控件。 使用javascript,您可以根据新车牌的选择显示它们。
发布表单时,如果控件已填充,则处理新的车牌。我认为最简单的方法是将所有字段放在同一父表单中。隐藏新板的控件。 使用javascript,您可以根据新车牌的选择显示它们。
发布表单时,如果控件已填充,您将处理新的车牌

luke,只是为了再次检查,表单标签在NewLicensePlate div?之后关闭??只是你没有在代码中显示表单标记闭包是的,很抱歉,为了简洁起见,它保留了表单的其余部分,但我会把它放进去。luke,只是再检查一下,表单标记在NewLicensePlate div之后确实关闭了??只是你没有在你的代码中显示表单标记闭包是的,很抱歉,为了简洁起见,它保留了表单的其余部分,但我会把它放进去。谢谢,是的,我想这样做,但我想尝试一些新的东西,但我可以保持简单。谢谢,是的,我想这样做,但我想尝试一些新的东西,但我可以保持简单。