我是 MVC 4 的新手。在我的项目中,我有一个要求,即拥有一个包含各种验证错误编号及其相应验证错误消息的特殊文件。然后我希望在模型中定义这些错误,然后再定义此类验证错误,我希望我的视图从该文件中获取相应的错误消息并将其显示在验证摘要中。
找到了一种通过使用[Remote]
属性来实现功能的方法。我就是这样做的。
模型 CUSTS.cs
namespace MvcTest.Models
{
public partial class CUSTS
{
public Nullable<double> Field1 { get; set; }
[Remote("ValidateAmount", "Validation", AdditionalFields = "Field1, Field2")]
[Display(Name = "BALANCE AMT")]
public Nullable<double> Field2 { get; set; }
}
}
控制器 ValidationController.cs
namespace MvcTest.Controllers
{
public class ValidationController : Controller
{
Entities1 db = new Entities1();
public static NameValueCollection messagesCol;
public String errorField;
public String errorMessage;
public JsonResult ValidateAmount(CUSTS custs)
{
CUSTS cus = new CUSTS();
if (custs.Field2< custs.Field1)
{
loadMessages();
String[] errMsg = new String[1];
errMsg = messagesCol.GetValues("OES0373");
string st=errMsg[0] + ". \r\n The Balance amount is:" + custs.XWIDV0 + " & the Credit Limit is:" + custs.XWGIVA;
return Json(st,JsonRequestBehavior.AllowGet);
//return new ActionResult(errMsg[0] + ". \r\n The Balance amount is:" + custs.XWIDV0 + " & the Credit Limit is:" + custs.XWGIVA);
}
return Json(true, JsonRequestBehavior.AllowGet);
//return ActionResult.Success;
}
public static void loadMessages()
{
StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath("~\\Models\\messages_en.properties"));
String fileContents = sr.ReadToEnd();
String[] sepr = new string[] { "\r\n" };
String[] lines = fileContents.Split(sepr, StringSplitOptions.RemoveEmptyEntries);
messagesCol = new NameValueCollection();
int numMessages = lines.Length;
foreach (string line in lines)
{
int indx = line.IndexOf('=');
if (indx != -1)
{
messagesCol.Add(line.Substring(0, indx), line.Substring(indx + 1));
}
}
sr.Close();
}
}
}
现在我想问两件事
- 这种实现所需功能的方式是否正确。还有什么可以做的。
- 我刚刚诊断出的另一个问题是视图中表单中的 post 方法正在执行,而不管验证是否有效。