【发布时间】:2019-04-16 15:00:17
【问题描述】:
我正在尝试处理 MVVM 中的 kendo 绑定。
我有一个像这样的 Razor 页面...
索引.cshtml
@page
@model IndexModel
@{
ViewData["Title"] = "Index";
}
<div id="frm">
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<div class="form-group">
<label><input type="text" class="form-control" data-bind="value: Username"/></label>
</div>
<button type="submit" class="btn btn-primary">Click</button>
}
<label>
<input type="text" class="form-control" data-bind="value: Username" />
</label>
</div>
<script>
var raw = @Html.Raw(Model.Me.ToJson());
var vm = new kendo.observable(raw);
kendo.bind($("#frm"), vm);
</script>
索引.cshtml.cs...
public class IndexModel : PageModelBase
{
[BindProperty]
public Person Me { get; set; }
public void OnGet()
{
Me = new Person { Username = "Bobby Brown" };
}
public void OnPost()
{
var p = Me;
p.Username += ".";
}
public class Person
{
public string Username { get; set; }
public string ToJson() => JsonConvert.SerializeObject(this);
}
}
当我呈现页面时,两个输入正确绑定到从服务器端模型传入的值。
当我在客户端更改其中一个输入的值并更改焦点时,另一个输入会更改。
我期待这一切。
当我点击按钮时,控件返回服务器并执行OnPost()中的代码。
Me 不会设置为 null 以外的其他值。
如上图我试过了,
我尝试将 OnPost() 方法重构为 OnPost(Person me),但未设置 me。
我尝试评估 Request.Form 对象,但那里什么都没有。
我确信它一定比我尝试做的更简单。
有人可以就我做错了提供任何建议吗?
【问题讨论】:
标签: mvvm data-binding kendo-ui