ورود

View Full Version : سوال: عدم اجرا Validation در view



Iran58
سه شنبه 09 خرداد 1396, 10:08 صبح
سلام
من کلاس و کنترلر و view زیر را نوشته ام

using System.ComponentModel.DataAnnotations;


namespace ErrorClient.Models
{
public class Login
{
public int Id { get; set; }
[Required(ErrorMessage = "number is Required...")]
[RegularExpression("^[0-9]{5}$", ErrorMessage = "Not number")]
public string User { get; set; }


[Required(ErrorMessage = "string is Required...")]
[RegularExpression("^[a-z]{5}$", ErrorMessage = "Not string")]
public string Pass { get; set; }
}
}


public ActionResult Create()
{
return View();
}




[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,User,Pass")] Login login)
{
if (ModelState.IsValid)
{
db.Logins.Add(login);
db.SaveChanges();
return RedirectToAction("Index");
}


return View(login);
}


@model ErrorClient.Models.Login


@{
ViewBag.Title = "Create";
}
@section ValidateCss
{
<link href="~/Content/jquery.validate.css" rel="stylesheet" />
}


@section ValidateJquery
{
<script src="~/Scripts/jquery.validatevalidateError.js"></script>
<script>
$(function () {
$("#myform").validate();
});
</script>
}
<h2>Create</h2>




@using (Html.BeginForm("Index", "Logins", FormMethod.Post, new { id = "myform" }))
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>Login</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.User, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.User, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.User, "", new { @class = "text-danger" })
</div>
</div>


<div class="form-group">
@Html.LabelFor(model => model.Pass, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Pass, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Pass, "", new { @class = "text-danger" })
</div>
</div>


<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}


<div>
@Html.ActionLink("Back to List", "Index")
</div>






اما Validation سمت سرور کار نمی کند
اما وقتی خط

@using (Html.BeginForm("Index", "Logins", FormMethod.Post, new { id = "myform" }))

را به تبدیل به کد زیر میکنم

@using (Html.BeginForm())

Validation سمت سرور کار می کند
برای حل این مشکل باید چکار کنم
باتشکر

مهدی کرامتی
سه شنبه 09 خرداد 1396, 18:57 عصر
فکر کنم مشکل از ID دادن به فرم تون است.
این رو:

@using (Html.BeginForm("Index", "Logins", FormMethod.Post, new { id = "myform" }))



تبدیل کنید به:

@using (Html.BeginForm("Index", "Logins", FormMethod.Post, new { }))



و نتیجه رو اعلام کنید.