gpt4 book ai didi

asp.net-mvc - ModelMetadata.Watermark 和 MVC View 模型

转载 作者:行者123 更新时间:2023-12-03 18:10:02 24 4
gpt4 key购买 nike

我正在努力在我的 MVC3 表单输入上显示水印(所谓的占位符)。

这里已经很少有帖子在讨论,包括这里非常集中的帖子:

Html5 Placeholders with .NET MVC 3 Razor EditorFor extension?

在这些帖子中,建议创建经过调整的 html.TextBox 模板。
就我而言,我的 Assets 是我不需要任何编辑器模板,因为我正在内联调整它们。

比长篇大论更好,这里是实际代码的相关部分:

~/Models/myModel.cs

namespace myProject.Models {
public class myFormModel {
...
[Display(Name = "firstFieldName", Prompt = "firstFieldPrompt")]
public string firstFieldValue { get; set; }
...
}
}

~/Controllers/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 标记在我呈现的网页上正确显示,但是尽管名称标记已正确填充,但它是空的,即使我的 View 模型属性上没有设置 DisplayName 装饰。

http://localhost/testpage
...
<input type="text" value="" placeholder="" name="firstFieldName" id="firstFieldName" class="myInputStyle">
...

我在这里想念什么?我确实尝试在正确的文件夹(~/Views/Shared/EditorTemplates/)中创建两个编辑器模板(MultilineText 和 String),但我认为它们永远不会被调用,因为我使用的是“Html.TextBoxFor”而不是“Html.文本框”...

另一件事,如果我从@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 })

?

最佳答案

我知道这是一个老歌,但你可以使用 ModelMetadata.FromLambdaExpression() View 中的方法(不使用模板),即

    @Html.TextBoxFor(x => x.firstFieldValue, 
new {
@class = "myInputStyle",
@placeholder = ModelMetadata.FromLambdaExpression(x => x.firstFieldValue, ViewData).Watermark
})

希望这可以帮助某人:-)

关于asp.net-mvc - ModelMetadata.Watermark 和 MVC View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com