Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# 将viewdata传递回控制器以与下拉列表一起使用_C#_Asp.net Mvc_Drop Down Menu_Viewstate - Fatal编程技术网

C# 将viewdata传递回控制器以与下拉列表一起使用

C# 将viewdata传递回控制器以与下拉列表一起使用,c#,asp.net-mvc,drop-down-menu,viewstate,C#,Asp.net Mvc,Drop Down Menu,Viewstate,我有一个页面,它有一个Html.DropDownList,它接受一个viewdata参数。问题是,当用户单击“保存”时,它会通过调用ModelState.IsValid验证模型如果失败,我希望页面显示错误,这样可以正常工作 我遇到的问题是下拉列表的viewdata丢失了,这意味着我不知道在验证错误之前列表框处于什么状态。有一个ajax调用,它允许从列表中添加和删除内容-这在隔离状态下工作正常 编辑-正如下面回答问题时所讨论的:实际上,我需要返回整个列表框。不需要当前选定的值。基本上,该列表包含未

我有一个页面,它有一个Html.DropDownList,它接受一个viewdata参数。问题是,当用户单击“保存”时,它会通过调用ModelState.IsValid验证模型如果失败,我希望页面显示错误,这样可以正常工作

我遇到的问题是下拉列表的viewdata丢失了,这意味着我不知道在验证错误之前列表框处于什么状态。有一个ajax调用,它允许从列表中添加和删除内容-这在隔离状态下工作正常

编辑-正如下面回答问题时所讨论的:实际上,我需要返回整个列表框。不需要当前选定的值。基本上,该列表包含未标记到文章的作者。当用户添加作者时,Javascript函数会将其从列表中删除,并将其添加到我可以跟踪的文本框中。我的问题是,我似乎无法恢复列表框的当前状态。我理解,一旦请求完成,viewstate实际上就丢失了。结束编辑希望这能让它更清楚

代码如下:

在编辑页面上

  ${Html.DropDownList("AuthorsDropDown")} <input type="button" onClick="removeOptions(Authors)"; value='Add author to article' />
关于保存操作

    [ValidateModel(typeof (ArticleDto)), AcceptVerbs(HttpVerbs.Post), ValidateInput(false)]
    public ActionResult Save(ArticleDto form)
    {
        return SaveContent(form, articleDto => RedirectToAction<NewsController>(c => c.Index(null)),PopulateIdentities);
    }
这是一个漫长的星期,所以我可能只是有点慢


感谢您抽出时间查看

好的,现在我知道您想要什么了

好的,问题是表单提交上的lisbox不会发送到服务器,只发送它所选的值。因此,在服务器上找不到项目列表

当用户按submit时,您可以尝试选择列表框中的所有项目

也可以:保留一个带有ID列表的隐藏输入字段,用逗号分隔。然后,当您从列表框中删除时,您将从字段中删除。在服务器上,您将有一个用于操作的字符串参数,并对其进行解析

附言:

我尝试了第一种解决方案:

onclick='$("#remainingIds option").attr("selected","selected");'

在服务器上,IList remainingIds拥有所有项目。它应该能起作用。

谢谢你的回答,我需要把整个列表框都拿回来。不需要当前选定的值。基本上,该列表包含未标记到文章的作者。当用户添加作者时,Javascript函数会将其从列表中删除,并将其添加到我可以跟踪的文本框中。我的问题是,我似乎无法获取列表框的当前状态。谢谢再次回复。作品很棒,没有想到选择所有的项目都隐藏了文本框非常感谢Dave
onclick='$("#remainingIds option").attr("selected","selected");'