[英]How do I set the name attribute on a multiselect listbox generated using LIstBoxFor and MultiSelectList in Asp.net MVC 3?
[英]MVC: I am using MultiSelectList and when I select two values it just sends one value?
我在項目中使用MVC-Viewmodel,我的問題是,即使我在列表框中按住CTRL鍵並單擊兩個值,它也只能獲取一個值。 我希望用戶能夠選擇兩個值,但我不知道為什么它不會發生任何提示,謝謝!
這是我的控制器內部的GET n POST操作:
public ActionResult Create()
{
CreateViewModel model = new CreateViewModel();
List<CoreValue> corevalues = Arep.getallC();
model.CoreValuess = new MultiSelectList(corevalues, "CID", "Cname");
return View(model);
}
[HttpPost]
public ActionResult Create(CreateViewModel model)
{
if (ModelState.IsValid)
{
Question q = new Question();
var CoreValueID = int.Parse(model.Cname);
var getallC = Arep.getbycid(CoreValueID);
q.CoreValue.Add(getallC);
q.QuestionText = model.QuestionText;
Arep.addquestion(q);
Arep.save();
return RedirectToAction("Index");
}
return View(model);
這是在我的CreateViewModel內部:
public MultiSelectList CoreValues { get; set; }
這是我的觀點:
@Html.ListBoxFor(model => model.Cname,Model.Corevaluess)
似乎是什么問題?
提前致謝!
最好的祝福
除了拼寫錯誤,我相信以下是失敗的原因:
在您的ListBoxFor方法中,您正在使用model.Cname。 這樣,我相信您的意思是“選擇所選CoreValues的cName”。 但是(我猜是因為我看不到您的模型),CreateViewModel上的Cname屬性是字符串類型。 因此,您一次只能擁有一個價值。 您需要具有IEnumerable類型的屬性才能容納多個選擇。
將模型更新為以下內容:
public class CreateViewModel
{
public IEnumerable<string> SelectedValues { get; set; }
public IEnumerable<CoreValue> CoreValues { get; set; }
}
SelectedValues將用於包含帖子中的選定值。 我們還可以向其中添加項目,以表示創建視圖時應自動選擇的內容。
在您的控制器中執行以下操作:
public ActionResult Create()
{
CreateViewModel model = new CreateViewModel();
model.CoreValues = Arep.getallC();
return View(model);
}
最后,更新視圖:
@Html.ListBoxFor(m => m.SelectedValues, new MultiSelectList(Model.CoreValues, "CID", "Cname"))
現在,無論何時發布,您都應該能夠看到用戶選擇的值。
編輯:我不完全確定您的某些方法做什么,所以我正在猜測。
用於創建的POST方法:
[HttpPost]
public ActionResult Create(CreateViewModel model)
{
if (ModelState.IsValid)
{
foreach(var CoreValueID in model.SelectedValues)
{
Question q = new Question();
var getallC = Arep.getbycid(CoreValueID);
q.CoreValue.Add(getallC);
q.QuestionText = model.QuestionText;
Arep.addquestion(q);
}
Arep.save();
return RedirectToAction("Index");
}
return View(model);
}
如上所述,ASP.Net Mvc希望有一個字符串列表,但是通過使用經典的ASP樣式可以實現相同的目的
Request.Form["CoreValues"]
這將提供逗號分隔的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.