asp.net-mvc – .input-validation-error为表单重新显示失败值时的文本框
|
我已经要求 question知道为什么在我的应用程序中,当我使用模型绑定来验证模型(TryUpdateModel())时,文本框被突出显示(即红色边框和粉红色阴影背景应用于文本框)但是当我使用时手动验证(ModelState.AddModelError).现在已经2天了,没有任何答案.我自己尝试过所有事情而没有成功.所以,我决定以不同的方式提出这个问题. 我理解IT的方式,这就是ModelBinding如何处理请求. > ModelBinding从httpcontext获取传入值 这是我的问题当重新显示表单时: 正在为其值无效突出显示的文本框做了什么? 我知道Site.css中的类很少,例如.input-validation-error和.field-validation-error应用于文本框.也许ModelBinding在内部使用一个命令,如AddCss(“#MyTextBox”,“.input-validation-error”). 如果我知道它是如何工作的,我可以(也许)手动解决我的问题. 编辑 根据@Ian Galloway的要求,这是代码 public class RegistrationController : Controller
{
public FormViewModel formViewModel;
private RegistrationService _registrationService = new RegistrationService();
private SaveService _saveService = new SaveService();
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var serialized = Request.Form["formViewModel"];
if (serialized != null)
{
formViewModel = (FormViewModel)new MvcSerializer()
.Deserialize(serialized);
TryUpdateModel(formViewModel);
}
else
formViewModel = (FormViewModel)TempData["formViewModel"]
?? new FormViewModel();
}
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.Result is RedirectToRouteResult)
TempData["formViewModel"] = formViewModel;
}
public ActionResult SetUpOrganization(string cancel,string nextButton)
{
if ((nextButton != null) && ModelState.IsValid)
{
if (formViewModel.navigationData.IsAReview)
return RedirectToAction("RequestPreview");
return RedirectToAction("ChooseTypeOrganization");
}
ViewData["Cities"] = _registrationService.Get_Cities();
formViewModel.navigationData.NextAction = "SetUpOrganization";
return View(formViewModel);
}
public ActionResult ChooseTypeOrganization(string backButton,string nextButton)
{
if (backButton != null)
{
return RedirectToAction("SetUpOrganization");
}
if (nextButton != null)
{
if (formViewModel.navigationData.IsAReview)
return RedirectToAction("RequestPreview");
return RedirectToAction("DocumentsPresented");
}
ViewData["TypeOrganization"] = _registrationService.Get_AllTypeOrganization();
formViewModel.navigationData.NextAction = "ChooseTypeOrganization";
return View(formViewModel);
}
public ActionResult DocumentsPresented(string backButton,string nextButton)
{
if (backButton != null)
{
return RedirectToAction("ChooseTypeOrganization");
}
if (nextButton != null)
{
//Validation
if (string.IsNullOrEmpty(formViewModel.registrationData.DocumentPresente))
{
ModelState.AddModelError("DocumentPresente","Veuillez préciser votre
autorisation");
return View(formViewModel);
}
//Navigation
if (formViewModel.navigationData.IsAReview)
return RedirectToAction("RequestPreview");
return RedirectToAction("PeopleRecommended");
}
formViewModel.navigationData.NextAction = "DocumentsPresented";
return View(formViewModel);
}
public ActionResult PeopleRecommended(string backButton,string nextButton,string deleteButton,string deletePerson,string addPerson)
{
if (backButton != null)
{
return RedirectToAction("DocumentsPresented");
}
if (nextButton != null)
{
ModelState.Clear();
if (formViewModel.registrationData.PeopleRecommended.Count == 0)
ModelState.AddModelError("","Il faut absolument designer un responsable pour la requête");
//
if (ModelState.IsValid)
{
if (formViewModel.navigationData.IsAReview)
return RedirectToAction("RequestPreview");
return RedirectToAction("StateObjectifs");
}
else
{
return View(formViewModel);
}
}
//
if (addPerson != null)
{
if (ModelState.IsValid)
{
formViewModel.registrationData.PeopleRecommended.Add(
_registrationService.Translate_PersonToBeAdded_Into_Person(formViewModel.personToBeAdded)
);
formViewModel.personToBeAdded = null;
}
else
{
formViewModel.navigationData.NextAction = "PeopleRecommended";
return View(formViewModel);
}
}
if (deleteButton != null)
{
formViewModel.registrationData.PeopleRecommended.RemoveAt(int.Parse(deletePerson));
}
ViewData.ModelState.Clear();
formViewModel.navigationData.NextAction = "PeopleRecommended";
return View(formViewModel);
}
[ValidateInput(false)]
public ActionResult StateObjectifs(string backButton,string nextButton)
{
if (backButton != null)
{
return RedirectToAction("PeopleRecommended");
}
if (nextButton != null)
{
if (string.IsNullOrEmpty(formViewModel.registrationData.Objective) ||
string.IsNullOrEmpty(formViewModel.registrationData.RequestDetails))
{
if (string.IsNullOrEmpty(formViewModel.registrationData.Objective))
ModelState.AddModelError("Objective","Vous devez préciser l'objectif de votre requête");
if (string.IsNullOrEmpty(formViewModel.registrationData.RequestDetails))
ModelState.AddModelError("RequestDetails","Vous devez préciser le contenu de votre requête");
return View(formViewModel);
}
if (formViewModel.navigationData.IsAReview)
return RedirectToAction("RequestPreview");
return RedirectToAction("StateDeadLine");
}
return View(formViewModel);
}
public ActionResult StateDeadLine(string backButton,string nextButton)
{
if (backButton != null)
{
return RedirectToAction("StateObjectifs");
}
if (nextButton != null)
{
if (formViewModel.registrationData.ChooseDifferentDeadLine)
{
if (formViewModel.registrationData.DifferentDeadline == null ||
string.IsNullOrEmpty(formViewModel.registrationData.ReasonsForDifferentDeadLine))
{
if (formViewModel.registrationData.DifferentDeadline == null)
ModelState.AddModelError("DifferentDeadline","Clickez pour choisir une nouvelle date");
if (string.IsNullOrEmpty(formViewModel.registrationData.ReasonsForDifferentDeadLine))
ModelState.AddModelError("ReasonsForDifferentDeadLine","Expliquez brievement pour quoi ce changement");
return View(formViewModel);
}
}
return RedirectToAction("RequestPreview");
}
formViewModel.navigationData.NextAction = "StateDeadLine";
return View(formViewModel);
}
public ActionResult RequestPreview(string backButton,string reviewInput,string save)
{
if (backButton != null)
{
return RedirectToAction("StateDeadLine");
}
if (nextButton != null)
{
_saveService.Save_FormViewModel(formViewModel);
return RedirectToAction("Index","Home");
}
if (reviewInput != null)
{
formViewModel.navigationData.IsAReview = true;
return RedirectToAction(RedirectHelpers.RedirectReviewAction(formViewModel.navigationData,reviewInput));
}
ViewData["TypeOrganization_Summary"] = _registrationService.Get_TypeOrganization_Summary(
formViewModel.registrationData.TypeOrganizationID );
if (save != null)
{
_saveService.Save_FormViewModel(formViewModel);
return RedirectToAction("Index","Home");
}
formViewModel.navigationData.NextAction = "RequestPreview";
return View(formViewModel);
}
}
编辑2 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 不再使用XXXX.现在用于检测模型中的更改
- asp.net – 这些Web Essentials选项有什么作用?
- asp.net-mvc – 失败的ASP.NET MVC路由.这是一个错误还是角
- asp.net-mvc – ASP.NET MVC:很多路由 – 总是只有一个控制
- asp.net-web-api – WebAPI 2.2不支持substringof函数
- asp.net-mvc – ASP.NET MVC中的Page.EnableSessionState等
- asp.net-mvc – ASP.NET MVC JavaScript路由
- asp.net-mvc – 为什么InitializeSimpleMembershipAttribut
- asp.net-mvc – 使用AWS .NET SDK进行SNS订阅确认示例
- asp.net-mvc – 重用MVC arhitecture;有两层UI:ASP.NET MV
- asp.net – 如何将IIS Developer Express切换到“
- asp.net – 防止XSS(跨站脚本)
- asp.net-core – ASP.NET核心查找所有程序集中的
- 我在哪里可以报告ASP.NET浏览器文件的问题?
- asp.net-mvc – 为什么我的动作方法不会超时?
- asp.net-mvc – ASP.NET MVC在自定义操作过滤器中
- asp.net – WebAPI不返回XML,即使有正确的Accept
- 当在ASP.NET中调用AppInitialize方法时?
- 在ASP.NET应用程序的global.asax中处理Applicati
- asp.net-mvc – 使用FileResult返回压缩文件的AS
