ViewModel绑定问题

ViewModel Binding issue

本文关键字:问题 绑定 ViewModel      更新时间:2023-09-26

我有一个viewModel在我的视图页面绑定如下:

var form = $("form");
    $(function () {
        var viewModel = kendo.observable(JSON.parse('@Html.Raw(Json.Encode(Model))'));
        kendo.bind(form, viewModel[0]);
    });

但是这里的问题是我正在使用viewModel[0],这对我来说看起来很奇怪。

我们是否可以将绑定代码重写为没有[0]的样子,这将在绑定

时产生问题
  kendo.bind(form, viewModel);

这是我的观点:

@model IList<PC.CManager.Cs.Domain.Models.Ln>
@using (Html.BeginForm())
{
    <div class="panel panel-primary">
        <div class="panel-heading inform" style="">
            <table clases="panel-title inform">
                <tr>
                    <td class="inform">Loan Number: <label id="loannum" name="loannum">1000100001</label></td>
                    <td class="inform">Status: <label id="loanstatus" name="loanstatus">Forclosure</label></td>
                    <td class="inform">Loan Type: <label id="loantype" name="loantype">Government(FHA)</label></td>
                </tr>
            </table>
        </div>

控制器:

  public async Task<ActionResult> ClaimDetail()
        {
            //return View();
            string id = "1000000246";
             if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            var LnDetail = await _LnProxy.GetLnDetailByLnNum((string)id);
            if (LnDetail == null)
            {
                return HttpNotFound();
            }
            return View(LnDetail);
        }

我们如何重写绑定代码看起来很好,工作良好?

由于您希望只使用第一个元素,并且这是应该的,因为您是通过"id"获得它,因此您可以只返回单个元素而不是元素列表。

var LnDetail = await _LnProxy.GetLnDetailByLnNum((string)id).FirstOrDefault();

然后你的模型将是:

@model PC.CManager.Cs.Domain.Models.Ln

然后在JavaScript中,你可以使用它没有尖括号,只是viewModel。因为它现在是一个单独的对象,而不是一个数组。