我有一個應用程序,主要是在此處使用ET 6 DB First +控制器/視圖腳手架生成的。我對從我的控制器發佈Razor的概念感到困惑。基本上我的數據並沒有超過DOM
。在Http Post的剃刀中使用@model時出現混亂
這裏是我的控制器:(不介意驗證設置,這不是一個面向公衆的應用程序)
namespace RegTeg.Controllers
{
public class HomeController : Controller
{
private VRIIntegrationEntities db = new VRIIntegrationEntities();
public ActionResult Index()
{
return View(db.ApplicationNames.ToList());
}
[HttpPost]
// [ValidateAntiForgeryToken]
[ValidateInput(false)]
public ActionResult Index([Bind(Include = "appName")] RegTeg.Models.ApplicationName newAppName)
{
if (ModelState.IsValid)
{
db.ApplicationNames.Add(newAppName);
db.SaveChanges(); //fails here due to a null column
return RedirectToAction("Index");
}
return View(newAppName);
}
}
}
所以,我有我的指數中,我提供一個列表視圖,以便我能在訪問該頁面時將數據從我的數據庫顯示給用戶。在這個頁面上還有一個帖子,他們可以添加一些東西給DB。我將它傳遞給我的模型的一個實例,然後插入到表格中。所以這很好(所以我認爲)。
現在對於我的看法:
@model IEnumerable<RegTeg.Models.ApplicationName>
<div>
<select class="applicationSelect">
@foreach (var item in Model)
{
<option>
@Html.DisplayFor(modelItem => item.appName)
</option>
}
</select>
</div>
@using (Html.BeginForm())
{
RegTeg.Models.ApplicationName appModel = new RegTeg.Models.ApplicationName();
<div class="form-horizontal">
@Html.ValidationSummary(true)
@Html.AntiForgeryToken()
<h3>Add New Application for Testing:</h3>
<div class="form-group">
@Html.LabelFor(model => appModel.appName, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => appModel.appName)
@Html.ValidationMessageFor(model => appModel.appName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
我通過我的強類型的模型。在我的foreach循環中獲取數據...好吧,完成了,現在我想對我的服務器做一個帖子,並將新的數據添加到我的數據庫。我創建了這個模型的一個新實例,從我的輸入中提取數據並繁榮,然後提交。但問題是,數據是null
。我有一個預感,它與我的@model
聲明有關。例如,該帖子需要一個@model RegTeg.Models.ApplicationName
但是我認爲當我在我的視圖中稍後聲明新實例時沒有必要?我希望我表達得很好。提前致謝。
看起來像最初你傳遞一個列表,但在您只將單個項目傳遞給視圖,但您的視圖期待列表。 – 2014-10-30 16:23:06
@MikeC。這就是我的想法,那麼你會如何推薦這兩個?傳入數據庫VRIIntegrationEntity。從視圖中構建一個列表和一個模型實例?我想我不知道如何處理兩者? – 40Alpha 2014-10-30 16:29:20
在您的文章ActionMethod中,構建一個列表並將其添加到該列表中,然後繼續按照您的視圖所期望的傳遞列表。 – 2014-10-30 16:30:22