Asp.net

ErrorMessageResourceName 和 ErrorMessage 不能同時設置,但我只設置一個

  • August 11, 2017

這是我使用 MVC2 時遇到的錯誤:

Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.

它來自於

$$ Required $$驗證數據註解。 堆棧跟踪:

InvalidOperationException: Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.]
  System.ComponentModel.DataAnnotations.ValidationAttribute.SetupResourceAccessor() +89338
  System.ComponentModel.DataAnnotations.ValidationAttribute.FormatErrorMessage(String name) +38
  System.Web.Mvc.<Validate>d__1.MoveNext() +215
  System.Web.Mvc.<Validate>d__5.MoveNext() +735
  System.Web.Mvc.DefaultModelBinder.OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext) +424
  System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +732
  System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +475
  System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +152
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +709
  System.Web.Mvc.Controller.ExecuteCore() +162
  System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +58
  System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453
  System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371

我已經將我的視圖模型歸結為這個(只要有

$$ Required $$屬性,沒有):

[Required(ErrorMessage = "")]
[DataType(DataType.Text)]
[DisplayName("Property Name")]
public string MyProperty { get; set; }

我的控制器返回一個空的 ViewModel,視圖中的表單完全是空白的……只是一個送出按鈕。

問題在於將 ErrorMessage 設置為空白字元串。我不得不假設在某些時候在 MVC 程式碼中檢查 String.Empty 會導致問題。

將 ErrorMessage 設置為“”(一個空格)解決了這個問題。

就我而言,我寫了 ErrorMessage = null,例如:

[EmailAddress(ErrorMessageResourceName = "FORM_FIELD_VALIDATION_EMAIL", ErrorMessageResourceType = typeof(App_GlobalResources.Common.View_Common_Forms), ErrorMessage = null)]

ErrorMessage = " "不工作。

引用自:https://stackoverflow.com/questions/5188128