asp.net-mvc - 如何使控制值在请求之间保持不变?

标签 asp.net-mvc asp.net-mvc-4 razor

我正在使用 ViewData 将列表传递到我的 View :

// Controller:
ViewData["myList"] = new SelectList(new List<string>(new[] "AAA", "BBB", "CCC" }));

我使用此列表来填充列表框:

// View:
@Html.ListBox("myList")

在发布时,我检索所选项目,如下所示:

// Controller:
string myList = form["myList"]

到目前为止一切顺利,但选定的项目已在“发布”中全部清除。
如何使所选项目在请求中持续存在?

最佳答案

正如已经提到的,MVC 没有 ViewState 机制,因此您想要在 View 中呈现的值必须在每个请求时实例化。

这是一个相当粗略的示例,但应该概述您需要做什么:

public ActionResult Index()
{
    ViewData["myList"] = GetSelectList();
    return View();
}

[HttpPost]
public ActionResult Index(FormCollection form)
{
    ViewData["myList"] = GetSelectList(form["myList"]);
    return View();
}

private MultiSelectList GetSelectList(string selected = "")
{
    var selectedValues = selected.Split(',');
    return new MultiSelectList(new List<string>(new[] { "AAA", "BBB", "CCC" }), selectedValues);
}

查看标记

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@using (Html.BeginForm()) {
    @Html.ListBox("myList")
    <input type="submit" value="Submit" />
}

关于asp.net-mvc - 如何使控制值在请求之间保持不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19167692/

相关文章:

c# - 从 html 助手中获取未编码的 html

asp.net-mvc - 如何正确识别vs2008版本级别?

c# - 为什么我的 MVC Controller 在提供图像时速度很慢

asp.net - 如何将 Polymer 元素绑定(bind)到 ASP.NET 中的模型

c# - 用于获取刷新 token 的 Google C# 客户端库

c# - Html.RadioButtonFor MVC 绑定(bind)

jquery - 更改<ul>中<li>的颜色

asp.net - 设计支持子站点的 ASP.NET 应用程序

asp.net-mvc - 登录后如何通过 MVC 提供静态文件(我正在尝试向我的大型 MVC 项目添加一个 Angular 迷你 SPA)

asp.net-mvc-3 - web.config 中的 httperrors