2014-06-05 28 views
-1

這裏是我的行動:MVC ModelStatus錯誤未顯示在視圖中?

public virtual ActionResult DeleteClass(int id) 
    { 
      var Model = service.AllClasses(); 
      MergeModelState(service.Exceptions); // Please see below description 
      return RedirectToAction("Index",Classes); 
     } 

編輯 我的看法代碼是在這裏:

@using Scripts = System.Web.Optimization.Scripts 
@model List<Demo.CustomTypes.Class> 

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
<div class="row"> 
    <div class="col-md-12"> 
     <div class="table-responsive"> 
      @if (Model != null && Model.Count > 0) 
      { 
       <table class="table table-hover table-striped"> 
        <tr> 
         <td>Name</td> 
         <td>Location</td> 
         <td>Teacher</td> 
         <td></td> 
         <td></td> 
        </tr> 
        @foreach (var itm in Model) 
        { 
         <tr> 
          <td>@Html.ActionLink(@itm.Name,MVC.CodeTest.Students().AddRouteValue("id",@itm.ClassID))</td> 
          <td>@itm.Location</td> 
          <td>@itm.Teacher</td> 
          <td> 
           @Html.ActionLink("Edit",MVC.CodeTest.EditClass().AddRouteValue("id",itm.ClassID)) 
           <br/> 
          </td> 
          <td> 
           @Html.ActionLink("Delete",MVC.CodeTest.DeleteClass().AddRouteValue("id",itm.ClassID)) 
           <br/> 
          </td> 
         </tr> 

        } 
       </table> 
       <div class="col-md-12"> 
           @Html.ActionLink("Add",MVC.CodeTest.AddClass()) 
           <br/> 

       </div> 

      } 

     </div> 
    </div> 
</div> 
} 

在動作餘米使用MergeModelState添加錯誤(字符串鍵,字符串消息),然後我想要在視圖中顯示它,但鑑於我沒有得到任何錯誤/驗證消息。在Immidiate Windows中,我可以看到在ModelState中添加了錯誤。請幫忙。

編輯2:

這裏是我的方法,是在加入的ModelState錯誤。它在BaseController類中,我的控制器正在使用這個類。

public class BaseContoller : Controller 
    { 
     public void MergeModelState(List<ExceptionPairs> exceptions) 
     { 
      foreach (var exception in exceptions) 
      { 
       ModelState.AddModelError(string.Empty, exception.Message); 
      } 

     } 
    } 
+2

表單元素中是否有@@ Html.ValidationSummary()? –

+1

我希望你已經包含必要的.js文件? –

+0

@StephenMuecke不,它是我在那裏展示的所有代碼。 – haansi

回答

2

您必須在窗體元素中有@Html.ValidationSummary()才能顯示。參閱自MVC源以下代碼段(沒有形式,沒有消息!)

private static MvcHtmlString ValidationMessageHelper(this HtmlHelper htmlHelper, ModelMetadata modelMetadata, string expression, string validationMessage, IDictionary<string, object> htmlAttributes, string tag) 
{ 
    string modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression); 
FormContext formContext = htmlHelper.ViewContext.GetFormContextForClientValidation(); 
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName) && formContext == null) 
{ 
    return null; 
} 
+0

我在視圖中添加了表單標記,但仍未顯示。你能看看我更新的視圖代碼和指南嗎? – haansi

+0

在我看來我有@@使用腳本= System.Web.Optimization.Scripts在頂部,其他那麼我需要添加jQuery或任何其他js文件?對不起,我是新來的,不瞭解基本知識。 – haansi

+1

通過使用'@ Html.ValidationSummary(true)',您排除了屬性錯誤,因此請嘗試不帶參數(或使用'false')。你不需要'@using Scripts = System ....',並且你只需要jquery文件(驗證和驗證.unobtrusive)來進行客戶端驗證 –

0

模型誤差僅示出到電流控制器的視圖。 i.e-我們不能使用return RedirectToAction("Index",Classes);

必須使用return view (model); 那麼只有視圖顯示模型誤差。