簡體   English   中英

值不能為null或為空。\ r \ nParameter name:name

[英]Value cannot be null or empty.\r\nParameter name: name

當我去cshtml頁面時出現這個錯誤:

System.Web.Mvc.dll中出現“System.ArgumentException”類型的異常,但未在用戶代碼中處理

在我的cshtml代碼中:

<div class="form-group">
     @Html.Label("Model", new { @class = "control-label col-md-4" })
  <div class="col-md-8">
     @Html.Editor("Model")
  </div>
</div>

在此輸入圖像描述

但另一方面,如果我在@Html.Editor("PropertyModel")更改我的代碼

它完美地工作沒有錯誤發生。

更新:

在我的模型中:

public class PropertyAssign {
        public int PropertyAssignId { get; set; }

        public string PropertyName { get; set; }

        public string Model { get; set; }


        public DateTime AssignDate { get; set; }
    }

在我的控制器中:

 public ActionResult Create()
    {
      return View();
    }

我嘗試過這種情況,這很奇怪,但是使用@ Html.Editor()幫助器時,Model屬性的標識符存在一些問題。

@Html.Editor("Model") // throws an exception
@Html.EditorFor(m => m.Model) // works fine

也許在這種情況下,Model的含義是整個模型,它被傳遞給視圖,而不是單個屬性。 但是當我將Model屬性的標識符更改為其他屬性時,例如SomeModel,一切都很好。

@Html.Editor("SomeModel") // works fine
@Html.EditorFor(m => m.SomeModel) // works fine

因此,可能的解決方案是:

  • 更改您使用的編輯器助手或
  • 更改您的屬性標識符

拋出異常的原因是HtmlHelpers檢查ViewData以獲取要綁定的值。 ViewDataViewDataDictionary的類型 ,它包含一個屬性Model (它是傳遞給視圖的模型)。

在您的情況下,您不會將模型返回到視圖,因此ViewData.Modelnull並拋出異常。

要解決這個問題,請使用強類型的EditorFor(m => m.Model) (或TextBoxFor(m => m.Model)TextBoxFor(m => m.Model)你都應該這樣做。即使你沒有將模型傳遞給視圖,這個仍然會生成正確的HTML而不會拋出異常。

<input type="text" name="Model" id="Model" value="" />

但無論如何都是傳遞模型的最佳實踐,所以你的控制器方法應該是

public ActionResult Create()
{
  return View(new PropertyAssign());
}

使用您的模型名稱在頂部寫

@using projectNamespace.PropertyAssign 

當您使用編輯器為您的某些屬性時,您可以像寫一樣

@Html.EditorFor(m => m.PropertyName) 

對於文本框它

@Html.TextBoxFor(model => Model.PropertyAssign , new { @class = "release-prefix" @id = "prefix" })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM