NVM*_*NVM 2 razor asp.net-mvc-3
我的 MVC 3 项目中有一个模型的强类型剃刀视图。基本上它用于编辑模型。
该模型包含一个用于数据库键的 Id 字段和一些其他字符串字段(它是一个 viewModel 并且所有但那不是问题的重点)。
在视图中,我只有一个表单和一个提交按钮,没有别的。当视图被发布到控制器时,控制器中的模型的所有字段都是空的,除了 Id 字段,它似乎已经自动神奇地填充了。
在视图中没有对应的“输入”元素的情况下,Id 字段如何以及在何处填充到模型中。
这可能是一个愚蠢的问题,但即使只是一个指向我应该阅读的内容的链接,我也会很感激。谢谢。
我敢打赌它来自 url 作为路由参数。
例如,您有以下控制器:
public class HomeController: Controller
{
public ActionResult Index(int id)
{
vqr model = GetModel(id);
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
// the model.Id property will be automatically populated here
// because the request was POST /home/index/123
...
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下观点:
@model MyViewModel
@using (Html.BeginForm())
{
<button type="submit">OK</button>
}
Run Code Online (Sandbox Code Playgroud)
现在您导航到 GET/home/index/123并获得以下标记:
<form action="/home/index/123" method="post">
<button type="submit">OK</button>
</form>
Run Code Online (Sandbox Code Playgroud)
注意到action表单的属性了吗?这就是 id 的来源。基本上,Html.BeginForm()助手在生成 action 属性时使用当前 url,并且由于当前 url 是/home/index/123它被使用的。
并且因为如果您在 Global.asax 中保留了默认路由,则{id}在 url 的末尾使用了路由标记,所以默认模型绑定器成功地将其绑定到Id您的视图模型的属性。
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |