ViewModel绑定问题

时间:2015-09-22 12:19:33

标签: javascript .net model-view-controller mvvm kendo-ui

我的视图页面中有一个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);
        }

我们如何重写绑定代码看起来很好并且工作正常?

1 个答案:

答案 0 :(得分:0)

由于你只想使用第一个元素,因为你是通过&#34; id&#34;来获取它,你只能返回单个元素而不是元素列表。

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

然后你的模型将是:

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

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