【发布时间】:2013-11-26 20:21:29
【问题描述】:
我正在尝试使用 post 从视图中发送数据。我在一个 viewModel 中使用了两个模型,但在控制器中不接受数据。
这是我的 ViewModel(我的模型是由实体框架从 DB 生成的):
using System.Collections.Generic;
using RychleSkody.Models;
namespace RychleSkody.Models.ViewModels
{
public class LikvidaceDiagnoza
{
public LIKVIDACE LIKVIDACE { get; set; }
public LIKVIDACE_DIAGNOZY LIKVIDACE_DIAGNOZY { get; set; }
}
}
这是我的控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(LikvidaceDiagnoza likvidace)
{
if (ModelState.IsValid)
{
db.LIKVIDACE.Add(likvidace.LIKVIDACE);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ID_FREKVENCE = new SelectList(db.FREKVENCE, "ID_FREKVENCE", "NAZEV", likvidace.LIKVIDACE.ID_FREKVENCE);
ViewBag.ID_SAZBY = new SelectList(db.SAZBA, "ID_SAZBY", "NAZEV", likvidace.LIKVIDACE.ID_SAZBY);
ViewBag.ID_PRODUKTU = new SelectList(db.PRODUKT, "ID_PRODUKTU", "NAZEV", likvidace.LIKVIDACE.ID_PRODUKTU);
ViewBag.ID_LIKVIDACE_STAV = new SelectList(db.LIKVIDACE_STAV, "ID_LIKVIDACE_STAV", "NAZEV", likvidace.LIKVIDACE.ID_LIKVIDACE_STAV);
ViewBag.ID_TN_LIMITU = new SelectList(db.TN_LIMIT, "ID_TN_LIMITU", "ID_TN_LIMITU", likvidace.LIKVIDACE.ID_TN_LIMITU);
ViewBag.ID_TN_POSOUZENI = new SelectList(db.TN_POSOUZENI, "ID_TN_POSOUZENI", "NAZEV", likvidace.LIKVIDACE.ID_TN_POSOUZENI);
ViewBag.ID_UZIVATELE = new SelectList(db.UZIVATEL, "ID_UZIVATELE", "JMENO", likvidace.LIKVIDACE.ID_UZIVATELE);
//ViewBag.ID_DIAGNOZY = new SelectList(db.DIAGNOZA, "ID_DIAGNOZY", "NAZEV"); //opravit VIEW a přepsat do podobného stylu
ViewBag.VybraneDiagnozy = seznamVybranychDiagnoz;
ViewBag.New = false;
return View(likvidace);
}
这是我的观点:
@model RychleSkody.Models.ViewModels.LikvidaceDiagnoza
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>LIKVIDACE</legend>
<div class="editor-label">
DIAGNOZA
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.LIKVIDACE_DIAGNOZY.ID_DIAGNOZY, ViewBag.ID_DIAGNOZY as SelectList, string.Empty)
@Html.DropDownListFor(x => x.LIKVIDACE_DIAGNOZY, ViewBag.ID_STRANY as SelectList, string.Empty)
</div>
<div class="editor-field">
@Html.DropDownList("ID_DIAGNOZY", ViewBag.ID_DIAGNOZY as SelectList, string.Empty)
@Html.DropDownList("ID_STRANY", string.Empty)
</div>
<div class="editor-field">
@Html.DropDownList("ID_DIAGNOZY", string.Empty)
@Html.DropDownList("ID_STRANY", string.Empty)
</div>
...
正如您从视图中看到的那样,我试图找到正确的解决方案,但到目前为止我还没有成功。每次我在控制器的输入变量 likvidace 中得到 null。
感谢您的宝贵时间。
【问题讨论】:
-
无法弄清楚那个,似乎对我来说很好用。 :(
-
没关系,仍然感谢您的尝试
标签: asp.net-mvc post view controller viewmodel