我努力在MVC3表單輸入中顯示水印(所謂的佔位符)。ModelMetadata.Watermark和MVC查看模型
已經有幾個崗位這兒說話包括相當集中一個位置:
Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?
在這些帖子,建議由創建扭捏html.TextBox模板。 就我而言,我的資產是我不應該需要任何編輯器模板,因爲我正在對它們進行內聯調整。
比長談更好,這裏是實際的代碼的相關部分:
〜/型號/ myModel.cs
namespace myProject.Models {
public class myFormModel {
...
[Display(Name = "firstFieldName", Prompt = "firstFieldPrompt")]
public string firstFieldValue { get; set; }
...
}
}
〜/控制器/ myFormSurfaceController.cs
namespace myProject.Controllers {
public class myFormSurfaceController : SurfaceController {
...
[ChildActionOnly]
public PartialViewResult myForm()
{
return PartialView("myPartialView", new myFormModel());
}
...
[HttpPost, ValidateAntiForgeryToken]
public ActionResult handleMyFormSubmit(myFormModel model) {...}
...
}
}
〜/ Views/myProject/Partial/myPartialView.cshtml
@model myFormModel
@{
using (Html.BeginUmbracoForm("handleMyFormSubmit", "myFormSurface", null, new Dictionary<string, object> { { "class", "myFormStyle" }, { "id", "myFormId" } }))
{
...
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = ViewData.ModelMetadata.Watermark })
...
}
}
結果是佔位符html標記在我的渲染網頁上正確顯示,但是即使沒有在我的視圖模型的屬性上設置DisplayName裝飾,Name標記正確填充也是空的。
...
<input type="text" value="" placeholder="" name="firstFieldName" id="firstFieldName" class="myInputStyle">
...
缺少什麼我在這裏?我確實嘗試在正確的文件夾(〜/ Views/Shared/EditorTemplates /)中創建兩個編輯器模板(MultilineText和String),但我認爲它們從未被調用,因爲我使用的是「Html.TextBoxFor」而不是「Html」。 TextBox「...
其他的事情,如果我從@ Html.TextBoxFor調用中刪除」@placeholder = ViewData.ModelMetadata.Watermark「,我沒有任何」佔位符「顯示在渲染的網頁上。這很好,這部分電話確實很好。
在此先感謝您的任何幫助...
尼古拉斯。
編輯:
怎麼樣,如果我在我的模型創造更多的變數。
例如:
public string firstFieldPrompt { get { return "bla"; } set { } }
然後
@Html.TextBoxFor(x => x.firstFieldValue, new { @class = "myInputStyle", @placeholder = x => x.FirstFieldPrompt })
?
艱難的一個不是嗎? :) – user1288337 2012-03-23 18:44:21