因此,在一對多關係數據庫結構化應用程序中,您當然需要能夠爲父項添加多個子條目...因此,假設您有一個用戶,並且該用戶可以擁有一個配置文件,但每個配置文件可以有多個項目,當然項目由多個子表格組成,例如ProjectCodeSamples,就是其中之一...在MVC 3 w/razor中添加子條目時獲取父模型ID?
因此顯然要添加一個新的ProjectCodeSample,它需要它所屬的ProjectID (作爲外鍵)...因此,在AddCodeSample視圖中,您如何獲得該值,即ProjectID的值,以便您可以將其放入隱藏字段並傳遞它?
這裏是ProjectCodeSample型號:
namespace ProDevPortMVC3
{
using System;
using System.Collections.Generic;
public partial class ProjectCodeSample
{
public int ProjectCodeSampleID { get; set; }
public int ProjectID { get; set; }
public string ProjectCodeSampleContent { get; set; }
public string ProjectCodeSampleDescription { get; set; }
public virtual Project Project { get; set; }
}
}
這裏是爲AddCodeSample我的兩個控制器操作方法:
//
// GET: /Project/AddCodeSample
public ActionResult AddCodeSample()
{
return View();
}
//
// POST: /Project/AddCodeSample
[HttpPost]
public ActionResult AddCodeSample(ProjectCodeSample projectcodesample)
{
projectcodesample.ProjectCodeSampleContent = projectcodesample.ProjectCodeSampleContent.TrimStart();
if (ModelState.IsValid)
{
db.ProjectCodeSamples.Add(projectcodesample);
db.SaveChanges();
return RedirectToAction("Details/" + projectcodesample.ProjectID);
}
else
{
return View(projectcodesample);
}
}
這裏是我的AddCodeSample查看:
@model ProDevPortMVC3.ProjectCodeSample
@{
ViewBag.Title = "Add Code Sample";
}
<style type="text/css">
.editor-label { width: 200px; }
.editor-field { width: 700px; }
.submit-button-row { width: 900px; }
.bottom-nav { width: 900px; }
</style>
<h2>Add Code Sample</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset style="float: left; width: 900px;">
<legend>Project Code Sample</legend>
@Html.HiddenFor(model => model.ProjectID)
<div class="display-editor-label-field-row">
<div class="editor-label">
@Html.LabelFor(model => model.ProjectCodeSampleDescription, "Code Sample Description")
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.ProjectCodeSampleDescription, 4, 85, null)
@Html.ValidationMessageFor(model => model.ProjectCodeSampleDescription)
</div>
</div>
<br />
<div class="display-editor-label-field-row">
<div class="editor-label">
@Html.LabelFor(model => model.ProjectCodeSampleContent, "Code Sample")
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.ProjectCodeSampleContent, 15, 85, null)
@Html.ValidationMessageFor(model => model.ProjectCodeSampleContent)
</div>
</div>
<br />
<div class="display-editor-label-field-row">
<div class="submit-button-row">
<input type="submit" value="Save" />
</div>
</div>
<br />
<div class="bottom-nav">
@Html.ActionLink("Cancel", "Details", new { id = ViewContext.RouteData.Values["ID"] })
</div>
</fieldset>
}
所以很明顯這將不起作用,因爲「@ Html.HiddenFor(model => model.ProjectID)」將爲空。 。那麼我在做什麼錯了,你如何得到父母ID,這樣你就可以讓孩子入門?
你說得對,那個工作,非常感謝你... – 2012-02-07 00:09:13
再次感謝你,實際上,因爲我的父==>項目頁是項目模型,我能夠做到這樣的鏈接:「 @ Html.ActionLink(「Add New Code Sample」,「AddCodeSample」,new {id = Model.ProjectID})「 – 2012-02-07 00:19:23