Переплет на странице Бритва с Кендо - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь справиться с привязкой 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, но там ничего нет.

Я уверен, что это должно быть проще, чем я 'я пытаюсь это сделать.

Может кто-нибудь дать совет, что я делаю не так, пожалуйста?

1 Ответ

0 голосов
/ 16 апреля 2019

По сути, я тусклый.

Я решил это.Я пытался вставить квадратный колышек в круглое отверстие.

Я добавил скрытый ввод в форму с именем Me, чтобы соответствовать имени свойства, с которым я связывался.

Iизменил кнопку на обычную кнопку (от кнопки submit) и добавил обработчик onClick, который делал это ...

function submitForm() {
    $("#Me").val({ Username: vm.get("Username") });
    $("#frm").submit();
}

И "вот, свет был".

Спасибо за внимание

...