这是我正在尝试做的事情:
我正在尝试从MultiSelectList中收集多个字符串值,并在HttpPost上创建一个新的,单独的数据库行,该行对应于该关联模型的MultiSelectList中的每个值。
在这种情况下,我正在尝试为服务位置创建数据库条目(例如,在洛杉矶,圣地亚哥和旧金山服务的管道工)。所以他会进入我的应用程序并选择State:California然后选择City:Los Angeles,San Diego,San Francisco ...这将创建三条新记录,每条记录都有一个新的SPServiceLocationID:
SPServiceLocationID:1 SPCompanyAccountID:4 州:3 城市:洛杉矶
这是我的模特:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;
namespace BidFetcher.Models
{
public class SPServiceLocation
{
public int SPServiceLocationID { get; set; }
public int SPCompanyAccountID { get; set; }
[Display(Name = "State")]
public string state { get; set; }
[Required]
[Display(Name = "Cities (select all that apply)")]
public string city { get; set; }
public virtual SPCompanyAccount SPCompanyAccount { get; set; }
}
}
这是我的用于生成View的Controller,我在填充MultiSelectList时没有问题:
public ActionResult Create()
{
ViewBag.sessionName = HttpContext.Session["SPCompanyName"].ToString();
var compID = HttpContext.Session["SPCompanyAccountID"].ToString();
ViewBag.companyID = compID;
ViewBag.state = new SelectList(simpleDB.simpleState, "simpleStateID", "simpleStateID");
ViewBag.city = new MultiSelectList(simpleDB.simpleCity, "cityFull", "cityFull");
return View();
}
这是我生成MultiSelectList的View代码:
@Html.ListBox("city", ViewBag.city as MultiSelectList, new { @class = "chzn-select", data_placeholder = "Select cities..." })
最后,这是我的控制器数据,用于发布到数据库,这是我认为需要帮助的部分:
[HttpPost]
public ActionResult Create(SPServiceLocation spservicelocation, FormCollection formValues)
{
if (ModelState.IsValid)
{
db.SPServiceLocation.Add(spservicelocation);
db.SaveChanges();
return RedirectToAction("Create", "SPServiceLocation");
}
return View(spservicelocation);
}
如果有人可以为我提供教程或提供一些帮助,我将如何在这种情况下处理FormCollection并修改我的上述HttpPost以便它可以创建多个entires?
我的知识非常基础,所以感谢任何帮助!
答案 0 :(得分:0)
这是一个应该有用的教程:
http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/
你应该考虑使用ViewBag并使用ViewModels来处理你的信息(它会让你的生活变得更轻松):