2013-11-26 29 views
1

我试图使用帖子从视图发送数据。我在一个viewModel中使用两个模型,但在控制器中不接受数据。ASP将数据从视图(两个模型)发送到控制器

这是我的视图模型(从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中得到空值。

谢谢你的时间。

+0

无法找出一个出来,似乎对我很好。:( – hutchonoid

+0

没关系,仍然感谢您的尝试 – suchoss

+0

没有probs,祝你好运 – hutchonoid

回答

0

好吧终于我找到了“正确”(工作)的解决方案。我试图找出一个新项目。它现在正在为我工​​作。我希望这可以帮助别人。

这里的问题是在我创建视图

我必须使用强类型的辅助(DropDownListFor(型号=>模型...)这样的:

@Html.DropDownListFor(model => model.LIKVIDACE.ID_UZIVATELE, ViewBag.ID_UZIVATELE as SelectList, String.Empty) 

代替:

@Html.DropDownList("ID_DIAGNOZY", string.Empty) 
相关问题