我想在最初显示(GET)时在表单中的文本框旁边显示一个星号(*) 此外,我想在出现错误时使用相同的GET / POST视图)所以对于GET请求 我传入了一个空模型,如 return View(new Person());
稍后,当提交表单(POST)时,我使用数据注释,检查模型状态和 显示错误(如果有) Html.ValidationMessageFor(v => v.FirstName)
对于GET请求,模型状态有效且没有消息,因此不显示星号。 我试图通过检查请求类型并打印星号来解决此问题。 @(HttpContext.Current.Request.HttpMethod ==“GET”?“*”:Html.ValidationMessageFor(v => v.FirstName).ToString())
问题是Html.ValidationMessageFor(v => v.FirstName).ToString()已经编码 我想从Html.ValidationMessageFor(v => v.FirstName)获取原始html
或者可能有更好的方法。 1.如何显示默认的有用消息(表单字段旁边) - 例如“请输入nnn.nnn.nnn.nnn格式的IP地址”,以获取GET请求,然后显示错误(如果有的话)? 2.从剃刀角度检查if条件并编写字符串或MvcHtmlString
的最佳方法是什么?答案 0 :(得分:1)
继我上次评论之后,我将如何创建要使用的帮助程序:
public static class HtmlValidationExtensions
{
public static MvcHtmlString ValidationMessageForCustom<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string customString)
{
var returnedString = HttpContext.Current.Request.HttpMethod == "GET" ? customString : helper.ValidationMessageFor(expression).ToString();
return MvcHtmlString.Create(returnedString);
}
}
它将像@Html.ValidationMessageForCustom(v=> v.FirstName, "Please enter IP address in the nnn.nnn.nnn.nnn format")