2011-07-01 5 views
0

이것이 내 컨트롤러입니다 :맞춤 Html.ValidationMessage를 만드는 방법은 무엇입니까?

/// <summary> 
/// Activity 
/// </summary> 
/// <returns></returns> 
public ActionResult CreateActivity() 
{ 
    AriaCRMEntities aria = new AriaCRMEntities(); 
    var unit = from u in aria.ActivityGroupIDs select u; 
    List<SelectListItem> lst = new List<SelectListItem>(); 
    foreach (var u in unit) 
    { 
     lst.Add(new SelectListItem { Text = u.ActivityGroupName.ToString(), Value = u.ActivityGroupID_FK.ToString() }); 
    } 
    ViewData["activity"] = lst; 
    return View(); 
} 

[HttpPost] 
public ActionResult CreateActivity(FormCollection model) 
{ 

     if (ModelState.IsValid) 
     { 
      Activity activ = new Activity(); 
       if (!string.IsNullOrEmpty(model["ActivityGroupID_FK"])) 
       { 
        AriaCRMEntities aria = new AriaCRMEntities(); 
        activ.ActivityGroupID_FK = Int32.Parse(model["ActivityGroupID_FK"]); 
        activ.ActivityType = model["ActivityType"]; 
        activ.ActivityDes = model["ActivityDes"]; 
        aria.Activities.AddObject(activ); 
        aria.SaveChanges(); 
        return RedirectToAction("Create"); 
       } 
     } 
     return View(model); 
} 

이것은 내보기입니다 :

<% using (Html.BeginForm()) {%> 
<%: Html.ValidationSummary(true,) %> 
<fieldset> 
    <legend>Fields</legend> 
<br /> 
<%:Html.DropDownListFor(model=>model.ActivityGroupID_FK , (IEnumerable<SelectListItem>)ViewData["activity"], "انتخاب نوع فعالیت")%><br /> 
<%Html.ValidationMessageFor (model=>model.ActivityGroupID_FK,"dddddddddd"); %> 
    <div class="editor-label"> 
     <%: Html.LabelFor(model => model.ActivityType) %> 
    </div> 
    <div class="editor-field"> 
     <%: Html.TextBoxFor(model => model.ActivityType) %> 
     <%: Html.ValidationMessageFor(model => model.ActivityType,"dfsaaa") %> 
    </div> 
    <div class="editor-label"> 
     <%: Html.LabelFor(model => model.ActivityDes) %> 
    </div> 
    <div class="editor-field"> 
     <%: Html.TextBoxFor(model => model.ActivityDes) %> 
     <%: Html.ValidationMessageFor(model => model.ActivityDes) %> 
    </div> 
    <p> 
     <input type="submit" value="Create" id="btn"/> 
    </p> 
</fieldset> 
<% } %> 

하지만 이제 <%:Html.DropDownListFor%>를 검증해야합니다. 사용자 지정 유효성 검사를 어떻게 만듭니 까?

+0

정말로 당신이 요구하는 것이 무엇인지 질문 할 수 있습니까? –

+0

모델에 사용자 정의 유효성 검사를 적용 할 수 있습니다. [이 블로그 게시물] (http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx)을보십시오. 여기 [튜토리얼] (http://www.asp.net/mvc/tutorials/validation-with-the-data-annotation-validators-cs)이 있습니다. – Sharique

답변

2

, 당신과 같이 컨트롤러에서이 작업을 수행 할 수 있습니다

ModelState.AddModelError("ActivityGroupID_FK", "The selected value is invalid."); 

업데이트 난 그냥 확인을 발견

당신의 DropDownList로에 대한 메시지는 다음과 같습니다

<%Html.ValidationMessageFor (model=>model.ActivityGroupID_FK,"dddddddddd"); %> 

당신과 같이 그것을 변경할 수 있습니다 :

<%: Html.ValidationMessageFor(model=>model.ActivityGroupID_FK,"dddddddddd") %> 
+0

예 그러나이 오류 표시 사전에 전달 된 모델 항목의 형식은 'System.Web.Mvc.FormCollection'이지만이 사전에는 'Cascading2.Models.Activity'유형의 모델 항목이 필요합니다. – user818566

+0

이 오류는이 문제와 관련이 없다고 생각합니다. 'AddModelError'의 서명은 단지 두 개의 문자열 매개 변수를 취합니다; 'System.Web.Mvc.FormCollection' 또는'Cascading2.Models.Activity'는 여기에 관여하지 않습니다. 오류 설명에서 컨트롤러가 전달하는 모델이보기의 @model 지시문과 일치하지 않는 것 같습니다. –

관련 문제