如何在ASP.NET MVC中为GET和POST请求绑定字典类型参数?

2026-03-30 12:461阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计470个文字,预计阅读时间需要2分钟。

如何在ASP.NET MVC中为GET和POST请求绑定字典类型参数?

我想定义一个显示标签和复选框列表的视图,用户可以更改复选框,然后提交。我在复选框经典时遇到问题。也就是说,POST方法的字典参数为null。以下是GET和POST操作的方法:

javapublic ActionRes

我想定义一个显示标签和复选框列表的视图,用户可以更改复选框,然后回发.我在回复字典时遇到问题.也就是说,post方法的字典参数为null.

以下是GET和POST操作的操作方法:

public ActionResult MasterEdit(int id) { Dictionary<string, bool> kv = new Dictionary<string, bool>() { {"A", true}, {"B", false} }; return View(kv); } [HttpPost] public ActionResult MasterEdit(Dictionary<string, bool> kv) { return RedirectToAction("MasterEdit", new { id = 1 }); }

Beliw是观点

@model System.Collections.Generic.Dictionary<string, bool> @{ ViewBag.Title = "Edit"; } <h2> MasterEdit</h2> @using (Html.BeginForm()) { <table> @foreach(var dic in Model) { <tr> @dic.Key <input type="checkbox" name="kv" value="@dic.Value" /> </tr> } </table> <input type="submit" value="Save" /> }

任何想法都将非常感谢!

不要为此使用字典.它们与模型绑定不匹配.可能是PITA.

如何在ASP.NET MVC中为GET和POST请求绑定字典类型参数?

视图模型更合适:

public class MyViewModel { public string Id { get; set; } public bool Checked { get; set; } }

然后一个控制器:

public class HomeController : Controller { public ActionResult Index() { var model = new[] { new MyViewModel { Id = "A", Checked = true }, new MyViewModel { Id = "B", Checked = false }, }; return View(model); } [HttpPost] public ActionResult Index(IEnumerable<MyViewModel> model) { return View(model); } }

然后是相应的视图(〜/ Views / Home / Index.cshtml):

@model IEnumerable<MyViewModel> @using (Html.BeginForm()) { <table> <thead> <tr> <th></th> </tr> </thead> <tbody> @Html.EditorForModel() </tbody> </table> <input type="submit" value="Save" /> }

最后是相应的编辑器模板(〜/ Views / Home / EditorTemplates / MyViewModel.cshtml):

@model MyViewModel <tr> <td> @Html.HiddenFor(x => x.Id) @Html.CheckBoxFor(x => x.Checked) @Html.DisplayFor(x => x.Id) </td> </tr>

本文共计470个文字,预计阅读时间需要2分钟。

如何在ASP.NET MVC中为GET和POST请求绑定字典类型参数?

我想定义一个显示标签和复选框列表的视图,用户可以更改复选框,然后提交。我在复选框经典时遇到问题。也就是说,POST方法的字典参数为null。以下是GET和POST操作的方法:

javapublic ActionRes

我想定义一个显示标签和复选框列表的视图,用户可以更改复选框,然后回发.我在回复字典时遇到问题.也就是说,post方法的字典参数为null.

以下是GET和POST操作的操作方法:

public ActionResult MasterEdit(int id) { Dictionary<string, bool> kv = new Dictionary<string, bool>() { {"A", true}, {"B", false} }; return View(kv); } [HttpPost] public ActionResult MasterEdit(Dictionary<string, bool> kv) { return RedirectToAction("MasterEdit", new { id = 1 }); }

Beliw是观点

@model System.Collections.Generic.Dictionary<string, bool> @{ ViewBag.Title = "Edit"; } <h2> MasterEdit</h2> @using (Html.BeginForm()) { <table> @foreach(var dic in Model) { <tr> @dic.Key <input type="checkbox" name="kv" value="@dic.Value" /> </tr> } </table> <input type="submit" value="Save" /> }

任何想法都将非常感谢!

不要为此使用字典.它们与模型绑定不匹配.可能是PITA.

如何在ASP.NET MVC中为GET和POST请求绑定字典类型参数?

视图模型更合适:

public class MyViewModel { public string Id { get; set; } public bool Checked { get; set; } }

然后一个控制器:

public class HomeController : Controller { public ActionResult Index() { var model = new[] { new MyViewModel { Id = "A", Checked = true }, new MyViewModel { Id = "B", Checked = false }, }; return View(model); } [HttpPost] public ActionResult Index(IEnumerable<MyViewModel> model) { return View(model); } }

然后是相应的视图(〜/ Views / Home / Index.cshtml):

@model IEnumerable<MyViewModel> @using (Html.BeginForm()) { <table> <thead> <tr> <th></th> </tr> </thead> <tbody> @Html.EditorForModel() </tbody> </table> <input type="submit" value="Save" /> }

最后是相应的编辑器模板(〜/ Views / Home / EditorTemplates / MyViewModel.cshtml):

@model MyViewModel <tr> <td> @Html.HiddenFor(x => x.Id) @Html.CheckBoxFor(x => x.Checked) @Html.DisplayFor(x => x.Id) </td> </tr>