因此解决此问题的最简单方法是不使用API,
我尝试过MVC模型以具有存储过程
,类,API控制器,CreateController和Create View。由于某些原因,当我尝试使用Dropdownlist时,它出错并指向View
System.ArgumentNullException:'值不能为null。
参数名称:项目'
]中的代码><div class="form-group"> @Html.LabelFor(model => model.LH, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(r => r.LH, new SelectList(ViewBag.Type, "Value", "Text"), new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.LH, "", new { @class = "text-danger" }) </div> </div>
上面是我的视图
private ELSEntities db = new ELSEntities(); public void Dropdownlist() { //Populate my List IList<SelectListItem> ActivityType = new List<SelectListItem>(); ActivityType.Add(new SelectListItem { Text = "", Value = ""}); ActivityType.Add(new SelectListItem { Text = "Video", Value = "Video" }); ActivityType.Add(new SelectListItem { Text = "Test", Value = "Test" }); //-----Convertion SelectListItem to SelectList SelectList actT = new SelectList(ActivityType, "Value", "Text","0"); ViewBag.Type = actT; } //Create controllers for the view public ActionResult Create() { Dropdownlist(); return View(); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind] MultipleActivityClass mta) { if (ModelState.IsValid) { HttpClient hc = new HttpClient(); hc.BaseAddress = new Uri("http://localhost:53132/api/MultiAct"); var c = hc.PostAsJsonAsync<MultipleActivityClass>("MultiAct", mta); c.Wait(); } return View(mta); }
这是我的Controller
用于创建
]插入public IHttpActionResult MultiActCreate(MultipleActivityClass mt) { ELSEntities db = new ELSEntities(); //The store procedure name: MultipleActivity db.MultipleActivity(mt.LH); db.SaveChanges(); return Ok(); }
这是我在Controller中使用的API控制器,它使用类MultipleActivityClass
根据Stored Procedure
public class MultipleActivityClass { public string LH { get; set; } }
所以总有解决此问题的方法吗?我试图搜索相同的问题,但是对此没有好的解决方案。
我尝试过MVC模型以具有存储过程,类,API控制器,CreateController和Create View。由于某些原因,当我尝试使用Dropdownlist时,它出现了错误并指向视图系统...。
因此解决此问题的最简单方法是不使用API,
这意味着更改从中创建控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind] MultipleActivityClass mta)
{
if (ModelState.IsValid)
{
HttpClient hc = new HttpClient();
hc.BaseAddress = new Uri("http://localhost:53132/api/MultiAct");
var c = hc.PostAsJsonAsync<MultipleActivityClass>("MultiAct", mta);
c.Wait();
}
return View(mta);
}
进入
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind] MultipleActivityClass mta) { if (ModelState.IsValid) { db.MultipleActivity(mta.LH); db.SaveChanges(); return RedirectToAction("Index"); } return View(mta); }
我不知道为什么,如果有人可以解释,请这样做,谢谢。
因此解决此问题的最简单方法是不使用API,