gpt4 book ai didi

asp.net-mvc - Asp.net mvc 选择列表

转载 作者:行者123 更新时间:2023-12-01 23:03:03 25 4
gpt4 key购买 nike

我需要创建一个选择列表,保留状态,它不是传递给 View 的模型的一部分。我想我应该使用 ViewBag 将 List 传递给 View ?关于实现以及如何保留选择列表状态的任何建议(如何将选定的值传递回操作并再次传递给 View (这样做的可能方法)?

目前的行动:

public ActionResult Images(string x, string y)
{
//some code

ContentPage cp = this.ContentPage;

return View(cp);
}

//Post to action with same name:
[HttpPost]
public ActionResult Images(string someParameter)
{

ContentPage cp = this.ContentPage;

return View(cp);
}

目前的观点:
@model ContentPage
@{
ViewBag.Title = "Images";
CmsBaseController controller = (this.ViewContext.Controller as CmsBaseController);
}
@using (Html.BeginForm())
{
<div>

//This should go to List<SelectListItem> as I understand
<select name="perpage" id="perpage" onchange='submit();'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>

</select>
</div>
}

谢谢!!!

最佳答案

你看了吗this SO question ?如果您想使用 ViewBag/ViewData 传入该列表,那么那里的答案似乎可以解决问题。

也就是说,为什么不创建一个快速的 View 模型并将其存储在那里?这确实是一个简单的方法。

我不知道您的 ContentPage 模型是什么,但您当然可以制作一个 ContentPageViewModel ,它具有页面所需的任何内容(包括选择列表的值)。

示例:

例如,在 viewmodel 上有一个属性来保存选择和一个属性来保存一些可能值的枚举,这很容易。像这样的东西:

public class MyViewModel
{
...

public int SelectedId { get; set; }

...

public IEnumerable<Choice> Choices { get; set; }
}

在我的示例中,Choice 是一个具有两个属性的类,一个包含一些标识符,另一个保存要显示的文本。像这样的东西:
public class Choice
{
public int Id { get; set; }
public string Text { get; set; }
}

然后你也许可以拥有一个 DropDownListFor它为您处理显示/选择工作。像这样的东西:
@model MyViewModel

@Html.DropDownListFor(model => model.SelectedId, new SelectList(Model.Choices, "Id", "Text"), "Choose... ")

回到 Controller 的操作中, View 模型的 SelectedId将填充选择 View 下拉列表的相应 ID。

关于asp.net-mvc - Asp.net mvc 选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com