Rom*_*ats 4 c# validation asp.net-mvc remote-validation
我有模特:
public class MyModel
...fields
[Remote(ActionName, ControllerName)]
public string SomeNumber { get; set; }
..fields
Run Code Online (Sandbox Code Playgroud)
并在ControllerName控制器中执行操作:
public JsonResult ActionName(string someNumber)
{...}
Run Code Online (Sandbox Code Playgroud)
但是当调用action时,参数someNumber总是为null.当我尝试调试它时,我得到了
GET /ControllerName/ActionName?MyModel.SomeNumber =34189736
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它工作?(我无法传递整个模型MyModel,并且无法在我的视图中更改MyModel.SomeNumber字段的名称)
UPD.在我看来输入:
<input data-val="true" data-val-remote-additionalfields="*.SomeNumber" data-val-remote-url="/ControllerName/ActionName" id="MyModel_SomeNumber" name="MyModel.SomeNumber" type="text" value="34189734" class="valid">
Run Code Online (Sandbox Code Playgroud)
UPD解决了!:)我用单个字段SomeNumber创建新模型并使用前缀:
SomeNumber([Bind(Prefix = "MyModel")]MySingleFieldModel model)
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您使用嵌套ViewModels,则需要接受父ViewModel作为操作中的参数Validation.例如:
public class ParentViewModel
{
public UserViewModel User {get; set; }
//....
}
public class UserViewModel
{
[Remote("UniqueUsername", "Validation")]
public string Username { get; set; }
//....
}
Run Code Online (Sandbox Code Playgroud)
在ValidationController中:
public class ValidationController : Controller
{
public JsonResult UniqueUsername(ParentViewModel Registration)
{
var Username = Registration.User.Username; //access the child view model property like so
//Validate and return JsonResult
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |