를 만들 때 객체 탐색 속성에 대한 참조를 유지하는 방법에는 다음과 같은 편집보기의 일환으로 : -새로운 객체
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Rack.RackID)
@Html.HiddenFor(model => model.Resource.RESOURCEID)
@Html.HiddenFor(model => model.Rack.timestamp)
@Html.HiddenFor(model=>model.Rack.Technology)
<span class="f"> @Html.TextBoxFor(model => model.Rack.Technology.Tag, new
{ @readonly = "readonly" })</span>
<span class="f">Rack Name </span>
@Html.EditorFor(model => model.Resource.RESOURCENAME)
@Html.ValidationMessageFor(model => model.Resource.RESOURCENAME)
</div>
<div >
<span class="f">Product Name </span>
@Html.DropDownList("productName", ((IEnumerable<TMS.Models.ComponentDefinition>)ViewBag.Products).Select(option => new SelectListItem {
Text = (option == null ? "None" : option.COMPONENTNAME),
Value = option.COMPONENTNAME.ToString(),
Selected = (Model != null) && (Model.Resource.ComponentDefinition != null) && (option.COMPONENTNAME == Model.Resource.ComponentDefinition.COMPONENTNAME)
}), "Choose...")
@Html.ValidationMessageFor(model => model.Resource.COMPONENTID)
</div>
<input type="submit" value="Save" class="btn btn-primary"/>
}</div>
나는 다음 포스트 편집 액션 메소드를 가지고있다 -
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(RackJoin rj,FormCollection formValues)
{
string controllername = RouteData.Values["controller"].ToString();
try
{
if (ModelState.IsValid)
{
var message = "";
var status = "";
long assetid = new long();
XmlDocument doc = new XmlDocument();
using (var client = new WebClient())
{ var query = HttpUtility.ParseQueryString(string.Empty);
foreach (string key in formValues)
{
query[key] = this.Request.Form[key];
}
과 RackJoin 모델 클래스입니다 : -
public class RackJoin
{
public Rack Rack { get; set; }
public Resource Resource { get; set; }}
하지만이 직면하고있는 문제는 내가 산부인과 다시 게시 할 때이다 포스트 편집 액션 메소드를 사용하여 (Rack.Technology, Rack.SiteDefinistion)과 같은 모든 네비게이션 속성을 풀어 모든 오브젝트 탐색 속성을 유지 관리 할 수 있습니다. 따라서 포스트 편집 액션 메소드가 이러한 탐색에 액세스하려고한다면 속성 또는 편집 뷰가 모델 상태 오류 후에 렌더링되면 null 참조 예외가 발생하지 않습니다.
보기에 모델 정보를 유지하고 서버에 게시하는 경우 정보를 유지해야합니다. – James
이 일은 내가하려고하는 일이지만 실패했습니다. 예를 들어 나는 "@ Html.HiddenFor (model => model.Rack.Technology)"라고 쓰는 것이 기술 탐색을 랙에 게시 할 것이지만이 숨겨진 필드를 쓰면 model.state가 mvc로 false가됩니다. Rack.Technology를 문자열로 변환 할 수 없습니다! –
생성 된 HTML을 검사 했습니까? ''와 비슷하게 보일 것입니다. 기본으로 돌아가서 아주 간단한 모델 (속성이 적은)부터 시작하여 문제를 일으킬 때까지 점진적으로 속성을 소개합니다. – James