我正在尝试使用MVC应用程序中的实体框架实现远程验证。我需要帮助尝试定义操作签名和适当的路由配置。我的模型中有以下课程:
public class FiscalReports
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id { get; set; }
public Int64 Counter { get; set; }
public short FiscalYear { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MMM dd, yyyy}")]
[DisplayFormat(DataFormatString = "${0:N0}")]
[Remote("ValidateSalary", "FiscalReports", AdditionalFields ="Counter, FiscalYear")]
public int? Salaries { get; set; }
}
我有一个viewmodel,用于包含上述几个对象的视图。
public class FiscalReportVM
{
public FiscalReports CurrentFR { get; set; }
public FiscalReports ReportedToDate { get; set; }
public FiscalReports BudgetToDate { get; set; }
}
FiscalReports控制器中的验证操作如下:
public JsonResult ValidateSalary(int Salaries, short FiscalYear, int Counter)
{
return ValidateFiscalField(Salaries, FiscalYear, Counter, "Salaries");
}
在视图中我正在使用HTML帮助程序
@Html.EditorFor(model=>model.CurrentFR.Salaries)
这会正确生成字段和验证。生成的HTML在
下面input data-val="true" data-val-number="The field Salaries must be a number." data-val-remote="'Salaries'; is invalid." data-val-remote-additionalfields="*.Salaries,*.Counter,*.FiscalYear" data-val-remote-url="/FiscalReports/ValidateSalary" name="CurrentFR.Salaries" type="number" value="" />
验证请求正在正常触发,在fiddler中我看到以下请求:
http://localhost:50409/FiscalReports/ValidateSalary?CurrentFR.Salaries=27000&CurrentFR.Counter=4773&CurrentFR.FiscalYear=2
我的问题是我无法用点分表示法定义路径和动作。动作定义不接受虚线参数(不能执行ValidateSalary(int CurrentFR.Salaries,....)。我需要帮助尝试定义动作签名和相应的路径配置。
答案 0 :(得分:1)
难道你不能只使用一点JQuery来更改name属性吗?有什么影响:
$(“CurrentFR.Salaries”)。attr('name','Salaries')
记住有一个不太相似的问题,我只是暂时更改了视图中的名称,然后在操作中进行了更改。