Я пытаюсь справиться с привязкой kendo
в MVVM.
У меня есть страница Razor, которая выглядит следующим образом ...
Index.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>
Index.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);
}
}
Когда я отображаю страницу, 2 входа должным образом привязываются к переданному значению из серверной модели.
Когда я изменяю значение на одном из входных данных на стороне клиента и меняю фокус, другой входной сигнал изменяется.
Я ожидаю всего этого.
Когда я нажимаю кнопку, элемент управления возвращается на сервер и выполняет код в OnPost()
.
Чего не происходитдля Me
нужно установить значение, отличное от null
.
Я пробовал это, как показано выше,
Я пытался рефакторинг метода OnPost()
для OnPost(Person me)
, но me
не установлено.
Я пытался оценить объект Request.Form
, но там ничего нет.
Я уверен, что это должно быть проще, чем я 'я пытаюсь это сделать.
Может кто-нибудь дать совет, что я делаю не так, пожалуйста?