我是asp.mvc的新手,我试图找出为什么当我尝试通过EditorFor帮助程序更新模型的值时,它不会发送更新的值。
我必须遵循严格的代码约定,我的参数必须以前缀(bln / str / int等)开头
如果我保留没有前缀的其他参数(permissionKey / stationKey / username),则收到的值是更新的值(我需要的值)。
[HttpPost, ActionName("Save")]
public ActionResult Save(int intId, string permissionKey, string stationKey, string username)
{
var perm = _repository
.Get(row => row.Id == intId)
.First();
perm.PermissionKey = permissionKey;
perm.StationKey = stationKey;
perm.Username = username;
如果我将定义更改为strPermissionKey / strStationKey / strUsername,我将收到模型的旧值。
型号:
public class EditablePermissionRowModel
{
public int Id { get; set; }
public string PermissionKey { get; set; }
public string StationKey { get; set; }
public string Username { get; set; }
public bool EditPressed { get; set; } = false;
}
我的Html看起来像这样:
@using (Html.BeginForm("Save", "Permissions"))
{
@*@Html.AntiForgeryToken()*@
@Html.HiddenFor(m => m.Id)
.... more html....
<button type="submit" class="btn btn-link">
<span class="glyphicon glyphicon-ok"></span>
</button>
我还试图将我需要的所有参数都包含在内。 @ Html.Hidden(&#34; strPermissionKey&#34;,Model.PermissionKey);
但这仍然没有奏效。 (还尝试了@ Html.Editor(&#34; strPermissionKey&#34;,Model.PermissionKey)但没有运气)
我错过了什么?
编辑: @StephenMuecke帮助并指出我只需要将模型作为参数传回......这样做了。问题解决了。
此: public ActionResult Save(EditablePermissionRowModel udtModel){ ......代码......