문제

ASP.NET MVC 양식에 간단한 검증을 추가하려고 노력하고 있으며 입력에 추가 할 .input-validation-error 클래스를 얻는 데 어려움이 있습니다. 유효성 검사-서적 및 .Field-validation-error는 잘 작동합니다. 도와 주셔서 미리 감사드립니다!

편집 : 모두의 도움에 감사드립니다 !!! 오류를 피하기 위해이 줄을 컨트롤러에 추가해야했습니다.

ModelState.SetModelValue("txtEmailOrDealerID", collection.ToValueProvider()["txtEmailOrDealerID"]);

보기:

<%using (Html.BeginForm("DealerLogin", "Home", FormMethod.Post))
  { %>
    <fieldset>
        <legend>Dealer Login</legend>
        <div class="row">
            <%=Html.Label("txtEmailOrDealerID", "E-Mail Or Dealer ID:")%>
            <%=Html.TextBox("txtEmailOrDealerID")%>
            <%=Html.ValidationMessage("txtEmailOrDealerID", "*")%>
        </div>
        <div class="row">
            <%=Html.Label("txtPassword", "Password:")%>
            <%=Html.Password("txtPassword")%>
            <%=Html.ValidationMessage("txtPassword", "*")%>
        </div>
        <div class="centerbutton">
            <input type="submit" id="btnSubmitDealer" value="Login"/>
        </div>
    </fieldset>
<%} %>

컨트롤러 :

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult DealerLogin(FormCollection collection)
{
    if (string.IsNullOrEmpty(collection["txtEmailOrDealerID"].Trim()))
        ModelState.AddModelError("txtEmailOrDealerID", "E-Mail Address or Dealer ID is required.");
    if (string.IsNullOrEmpty(collection["txtPassword"].Trim()))
        ModelState.AddModelError("txtPassword", "Password is required.");
    if (ModelState.IsValid)
        return Redirect("~/MyUploads");
    else
        return View("Index");
}

CSS :

/*Validation*/
.field-validation-error{color: #ff0000;}
.input-validation-error{border: 1px solid #ff0000; background-color: #ffeeee;}
.validation-summary-errors{color: #ff0000;}

html.label 확장 방법 :

public static string Label(this HtmlHelper helper, string forControl, string text)
{
    return String.Format("<label for='{0}'>{1}</label>", forControl, text);
}
도움이 되었습니까?

해결책

내 머리 꼭대기에서 AddModelError ID 매개 변수는 입력의 ID와 일치해야합니다. 따라서 귀하의 경우에는 다음으로 변경해야합니다.

ModelState.AddModelError("txtEmailOrDealerID", "E-Mail Address or Dealer ID is required.");    
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top