Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
Asp.net 通过mvc中的控制器启用html下拉列表_Asp.net_Asp.net Mvc_Html.dropdownlistfor - Fatal编程技术网

Asp.net 通过mvc中的控制器启用html下拉列表

Asp.net 通过mvc中的控制器启用html下拉列表,asp.net,asp.net-mvc,html.dropdownlistfor,Asp.net,Asp.net Mvc,Html.dropdownlistfor,我有一个场景,在这个场景中,我必须根据用户的选择执行一些操作 下拉列表 <p> <label> State</label> <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()",

我有一个场景,在这个场景中,我必须根据用户的选择执行一些操作 下拉列表

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
对于基本参考,您可以使用国家、州、城市的示例

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
我能够填充国家/地区列表,当时我已将其他两个下拉列表设置为 禁用

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
填充国家/地区后,我要选择该州。该州正在填充

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
两个问题

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
1) 如何在国家ddl恢复其原始状态时保留其状态。 2) 如何通过我的控制器启用下拉菜单

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
myview代码

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

状态

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
城市

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
我的控制器代码

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
    public ActionResult InsertData()
    {

        var customers = from c in objDetailEntity.Country
                        select new
                        {
                            c.Cid,
                            c.Cname
                        };

        SelectList countriesList = new SelectList(customers.Take(100), "Cid", "Cname");
        ViewData["ddlCountries"] = countriesList;

        SelectList EmptyState = new SelectList(customers);
        ViewData["ddlState"] = EmptyState;
        ViewData["ddlCities"] = EmptyState;
        Session["ddlSesCountry"] = countriesList;
        return View();

    }




    //
    // POST: /RegisTest/Create

    [HttpPost]
    public ActionResult InsertData(FormCollection collection)
    {
        try
        {
            CountryId = Convert.ToInt16(Request.Form["ddlCountries"]);
            stateid = Convert.ToInt16(Request.Form["ddlState"]);
            if (CountryId > 0 && stateid <= 0)
            {
                var stateslist = from c in objDetailEntity.State
                                 where c.Country.Cid == CountryId
                                 select new
                                 {
                                     c.Sid,
                                     c.Sname
                                 };

                SelectList stateList = new SelectList(stateslist.Take(100), "Sid", "Sname");
                ViewData["ddlState"] = stateList;
                Session["StateList"] = stateList;
                ViewData["ddlCities"] = stateList;
            }

            if (stateid > 0)
            {
                var citieslist = from c in objDetailEntity.City
                                 where c.State.Sid == stateid
                                 select new
                                 {
                                     c.Ctid,
                                     c.Cityname
                                 };

                SelectList cityList = new SelectList(citieslist.Take(100), "Ctid", "Cityname");


                ViewData["ddlCities"] = cityList;
                ViewData["ddlState"] = Session["StateList"];
            }

            ViewData["ddlCountries"] = Session["ddlSesCountry"];



            return View();
        }
        catch
        {
            return View();
        }
    }
public ActionResult InsertData()
{
var客户=来自objDetailEntity.Country中的c
选择新的
{
c、 Cid,
c、 Cname
};
SelectList countriesList=新的SelectList(customers.Take(100),“Cid”,“Cname”);
ViewData[“DDLCONTRIES”]=国家列表;
SelectList EmptyState=新的SelectList(客户);
ViewData[“ddlState”]=清空状态;
ViewData[“ddlCities”]=清空状态;
会话[“ddlSesCountry”]=国家列表;
返回视图();
}
//
//POST:/RegisTest/Create
[HttpPost]
公共操作结果插入数据(FormCollection集合)
{
尝试
{
CountryId=Convert.ToInt16(Request.Form[“ddlCountries]”);
stateid=Convert.ToInt16(Request.Form[“ddlState”]);
如果(CountryId>0&&stateid 0)
{
var citieslist=来自objDetailEntity.City中的c
其中c.State.Sid==stateid
选择新的
{
c、 Ctid,
c、 城市名称
};
SelectList cityList=新建SelectList(citieslist.Take(100),“Ctid”,“Cityname”);
ViewData[“城市”]=城市列表;
ViewData[“ddlState”]=会话[“状态列表”];
}
ViewData[“ddlseCountries”]=会话[“ddlseCountries”];
返回视图();
}
接住
{
返回视图();
}
}

我的选择是根本不发回表单。我将在控制器中编写一个操作,该操作获取一个CountryID并返回一个包含状态列表的JsonResult。onchange事件可以调用jQuery函数,该函数使用AJAX调用此操作,加载新列表,并启用第二个下拉列表

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
但是,如果您坚持使用回发,以下是它不起作用的原因:

     <p>
        <label>
            State</label>
        <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>

     <p>
        <label>
            City</label>
        <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
    </p>
  • 国家/地区列表没有保留其选定值,因为每次都会从头重新加载视图,并且您将其设置为“未选定”。SelectList构造函数有一个重载,该重载将“SelectedItem”对象作为第四个参数。初始化SelectList时,应将适当的值传递给此参数,而不是在视图中强制执行

  •      <p>
            <label>
                State</label>
            <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>
    
         <p>
            <label>
                City</label>
            <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>
    
  • 您需要在视图中编写一个“if”子句,以根据某些条件选择是否启用列表。您可以绑定到具有布尔属性(如“EnableStates”)的ViewModel,或者可以使用状态列表中的值计数之类的内容—例如,如果计数大于零,请启用它

  •      <p>
            <label>
                State</label>
            <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>
    
         <p>
            <label>
                City</label>
            <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>
    

    当您从Web表单转移到MVC时,需要习惯的一件棘手的事情是您不再具有ViewState—您的应用程序是无状态的。没有任何东西可以“记住”在下拉列表中为您选择的值,您必须在每次加载页面时对其进行设置。

    我建议使用JSON&jQuery-like

         <p>
            <label>
                State</label>
            <%=Html.DropDownList("ddlState", ViewData["ddlState"] as SelectList, "--not selected--",new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>
    
         <p>
            <label>
                City</label>
            <%=Html.DropDownList("ddlCities", ViewData["ddlCities"] as SelectList, "--not selected--", new { onchange = "document.forms[0].submit()", disabled = "disabled" })%>
        </p>