Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
C# 如何从Ajax.BeginForm发布完整的DropDownList,而不仅仅是selectedId //模型 公共类选择模型 { 公共字符串CategoryId{get;set;} 公共列表{get;set;} } //视图模型 公共类视图模型 { public SelectModel SelectMod{get;set;} } //OnIndex呼叫 @Html.Partial(“ViewUserControl1”,Model.SelectMod) //ViewUserControl1.cshtml @模型MVCAPApplication4.Models.SelectModel @使用(Ajax.BeginForm(“Index1”、“Home”、新的AjaxOptions{UpdateTargetId=“formid”}、新的{id=“TheForm”})) { @DropDownListFor(x=>x.CategoryId,Model.List,“--选择一个--”) } //控制器 公共行动结果索引1(选择模型sm) { 返回PartialView(“ViewUserControl1”,sm); }_C#_Asp.net Mvc 3_Razor_Unobtrusive Javascript - Fatal编程技术网

C# 如何从Ajax.BeginForm发布完整的DropDownList,而不仅仅是selectedId //模型 公共类选择模型 { 公共字符串CategoryId{get;set;} 公共列表{get;set;} } //视图模型 公共类视图模型 { public SelectModel SelectMod{get;set;} } //OnIndex呼叫 @Html.Partial(“ViewUserControl1”,Model.SelectMod) //ViewUserControl1.cshtml @模型MVCAPApplication4.Models.SelectModel @使用(Ajax.BeginForm(“Index1”、“Home”、新的AjaxOptions{UpdateTargetId=“formid”}、新的{id=“TheForm”})) { @DropDownListFor(x=>x.CategoryId,Model.List,“--选择一个--”) } //控制器 公共行动结果索引1(选择模型sm) { 返回PartialView(“ViewUserControl1”,sm); }

C# 如何从Ajax.BeginForm发布完整的DropDownList,而不仅仅是selectedId //模型 公共类选择模型 { 公共字符串CategoryId{get;set;} 公共列表{get;set;} } //视图模型 公共类视图模型 { public SelectModel SelectMod{get;set;} } //OnIndex呼叫 @Html.Partial(“ViewUserControl1”,Model.SelectMod) //ViewUserControl1.cshtml @模型MVCAPApplication4.Models.SelectModel @使用(Ajax.BeginForm(“Index1”、“Home”、新的AjaxOptions{UpdateTargetId=“formid”}、新的{id=“TheForm”})) { @DropDownListFor(x=>x.CategoryId,Model.List,“--选择一个--”) } //控制器 公共行动结果索引1(选择模型sm) { 返回PartialView(“ViewUserControl1”,sm); },c#,asp.net-mvc-3,razor,unobtrusive-javascript,C#,Asp.net Mvc 3,Razor,Unobtrusive Javascript,因此,现在当您发布Ajax.BeginForm时,我们得到的是表单的selectedId,而不是完整的下拉列表。 如果我有很多下拉列表,我需要创建完整的下拉列表再次sm。 有没有一种方法,我可以发送整个下拉列表到控制器,并返回相同的 更新: AjaxOptions中是否应该有一个参数,允许我们发布页面的完整列表(如果需要)以及所选的ID。简短的回答是否定的!由于HTML中的DropDownList不会返回其所有成员,因此只返回所选成员 较长的答案是ASP.NET WebForms允许您执行您要求

因此,现在当您发布Ajax.BeginForm时,我们得到的是表单的selectedId,而不是完整的下拉列表。 如果我有很多下拉列表,我需要创建完整的下拉列表再次sm。 有没有一种方法,我可以发送整个下拉列表到控制器,并返回相同的

更新:
AjaxOptions中是否应该有一个参数,允许我们发布页面的完整列表(如果需要)以及所选的ID。

简短的回答是否定的!由于HTML中的DropDownList不会返回其所有成员,因此只返回所选成员

较长的答案是ASP.NET WebForms允许您执行您要求的操作,您可以通过创建与ASP.NET WebForms中的ViewState类似的机制来重新创建其中一些操作

ASP.NET WebForms的作用是将列表中的所有值存储在页面中两次。既可以在列表中显示,也可以在名为ViewState的隐藏字段中复制。然后在提交时将隐藏字段发送回服务器,并用于重新填充dropdownlist


您可以模仿ASP.NET WebForms在MVC中使用的相同行为,通过某种方式序列化集合并将其放入隐藏字段中。然后在提交时,您可以将隐藏字段中的数据反序列化回集合,并使用它填充下拉列表。

您能再次解释一下您想要整个下拉列表中的任何内容吗?
id
+
值是否足够?当我们提交表单时,可能会出现需要显示的验证错误,但为此,我们需要重新绘制部分页面。页面可能包含下拉列表。您将如何填充下拉列表。如果sm不包含列表,它将不会绘制。其他示例可能是登录部分页面。它有用户名、密码和状态可供选择,如果您希望返回带有状态下拉列表的页面时,页面上是否有错误。我知道我们可以使用ajax来执行此操作,但这只是一个示例。
//Model
public class SelectModel
{
    public string CategoryId { get; set; }
    public List<SelectListItem> List { get; set; }
}

//ViewModel
public class ViewModel
{
    public SelectModel SelectMod { get; set; }
}

//OnIndex call
@Html.Partial("ViewUserControl1", Model.SelectMod)

//ViewUserControl1.cshtml
@model MvcApplication4.Models.SelectModel
<div id="formid">
    @using (Ajax.BeginForm("Index1", "Home", new AjaxOptions { UpdateTargetId = "formid" }, new { id = "TheForm" }))
    { 
        @Html.DropDownListFor(x => x.CategoryId, Model.List, "--Select One--")
        <input type="submit" name="name" value="Submit" />
    }
</div>

//Controller
 public ActionResult Index1(SelectModel sm)
 {
     return PartialView("ViewUserControl1", sm);
 }