我正在建立一個博客網站。我希望用戶能夠編輯他們的帖子。 我需要更改HTML幫助程序的名稱以匹配我的模型,以便可以使用遠程驗證。覆蓋EditorFor ID和名稱
型號
[RegularExpression("[a-z]{1,50}", ErrorMessage = "URL String must be in lowercase")]
[Required(ErrorMessage = "Unique URL is required")]
[Remote("doesURLExist", "Post", HttpMethod = "POST",
ErrorMessage = "URL already exists. Please enter a different URL.")]
public string URLString { get; set; }
HTML,使用viewbag通過我的預填充數據。
<div class="form-group">
@Html.LabelFor(model => model.post.URLString, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.post.URLString, new { htmlAttributes = new { @Value = ViewBag.postURL, @class = "form-control", @name = "URLString" } })
@Html.ValidationMessageFor(model => model.post.URLString, "", new { @class = "text-danger" })
</div>
</div>
預填充的領域工作很好,但我的遠程驗證不起作用。 name屬性需要是「URLString」,但是它會以post.URLString的形式出現,無法在我的遠程方法中使用。
這裏是我的遠程方法檢查現有URLStrings
[HttpPost]
public JsonResult doesURLExist(String URLString)
{
var allposts = _unitOfWork.PostRepository.Get();
if (allposts.Count(p => p.URLString == URLString) == 0)
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
我已經得到了驗證遠程使用原始HTML和手動更改名稱屬性工作。
這是當我在谷歌瀏覽器中查看源代碼時助手輸出的原始html。我複製它並更改名稱。
<div class="form-group">
<label class="control-label col-md-2" for="post_URLString">URLString</label>
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true"
data-val-regex="URL String must be in lowercase" data-val-regex-pattern="[a-z]{1,50}"
data-val-remote="URL already exists. Please enter a different URL." data-val-remote-additionalfields="" data-val-remote-type="POST" data-val-remote-url="/Post/doesURLExist"
data-val-required="Unique URL is required" id="post_URLString" name="URLString" type="text" value= />
<span class="field-validation-valid text-danger" data-valmsg-for="URLString" data-valmsg-replace="true"></span>
</div>
</div>
因此,這很好!問題是我不能使用我的viewbag來預先填充數據。 所以我想我有2個問題讓我們解決更容易的問題。 1.如何在HTML值字段中獲取模型數據。值= Model.post.URLString不起作用。
- 如何重寫HTML name屬性@name = 「URLString」
我很新的C#我可能失去了一些東西真的很明顯。