Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 来自JSON GET调用的敲除和部分视图_Jquery_Asp.net_Asp.net Mvc_Knockout.js - Fatal编程技术网

Jquery 来自JSON GET调用的敲除和部分视图

Jquery 来自JSON GET调用的敲除和部分视图,jquery,asp.net,asp.net-mvc,knockout.js,Jquery,Asp.net,Asp.net Mvc,Knockout.js,我对KnockoutJS相当陌生。我想用JSON获取检索部分视图和所有带有验证的绑定 我的模型: public class MyFormModel { [Required] [Range(typeof(Decimal), "1", "9999")] [Display(Name = Translations.WorkReport.PRICE_PER_UNIT)] //[DisplayFormat(ApplyFormatInEd

我对
KnockoutJS
相当陌生。我想用JSON获取检索部分视图和所有带有验证的绑定

我的模型:

public class MyFormModel
    {
        [Required]
        [Range(typeof(Decimal), "1", "9999")]
        [Display(Name = Translations.WorkReport.PRICE_PER_UNIT)]
        //[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#,##}")] 
        public decimal Price { get; set; }

        [Required]
        [Range(typeof(Decimal), "1", "9999")]
        [Display(Name = Translations.WorkReport.QUANTITY)]
        //[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#,##}")]  
        public decimal Quantity { get; set; }
...
我的控制器:

[HttpGet]
        public virtual PartialViewResult GetDataByGroupId(int groupId)
        {
...
var view = PartialView("WorkReportResult", createWorkReportsListFormModel);
return view
}
我的部分观点是:

@for (int i = 0; i < Model.WorksReportsFormModel.WorkReportViewModelList.Count; i++)
{
    <tr>
        <td class="center">
            @Html.ValidationMessageFor(modelItem => Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Price)
            @Html.TextBoxFor(modelItem => Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Price,
                new
                {
                    @Value = Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Price != 0 ? Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Price.ToString() : "",
                    id = @Html.RenderNumbers("Price", i),
                    @class = "input-small focused"
                })
        </td>
        <td class="center">
            @Html.ValidationMessageFor(modelItem => Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Quantity)
            @Html.TextBoxFor(modelItem => Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Quantity,
                new
                {
                    @Value = Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Quantity != 0 ? Model.WorksReportsFormModel.WorkReportViewModelList[i].WorkReportFormModel.Quantity.ToString() : "",
                    id = @Html.RenderNumbers("Quantity", i),
                    @class = "input-small focused"
                })
        </td>
$.ajax({
                type: 'GET',
                timeout: 30000,
                url: '' + baseurl + '/CustomModel/ManageWorkReport/GetDataByGroupId',
                data: { groupId: value},
                cache: false,
                success: function (data) {
                    if (data) {
                        $("#content").html(data);
                        ...
但是不好,这里没有绑定。如何包括
KnockoutJS

我发现了这个,但不起作用!

我用的是这样的东西:

var unmapped = ko.mapping.toJS(self.Model);
var unmappedJSON = ko.toJSON(unmapped);

$.ajax({
            url: ...,
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json',
            data: unmappedJSON,
            success: function (data, textStatus, jqXHR) {
                //var mapping = self.Model.IgnoreMapping();
                var mapping = []
                var viewModel = ko.mapping.fromJS(data, mapping, self.Model);

                // TODO:  Show errors from the server's validation
            }

            error: ...
});
在ViewModel中,我执行以下操作:

    var vm = new ViewModel();

    var d = @(Html.Raw(Json.Encode(Model))); 
    self.Model = ko.mapping.fromJS(d);

    ko.applyBindings(vm);
在my View.cshtml中:

        @Html.LabelFor(model => model.Description, "Description")
        @Html.TextAreaFor(model => model.Description, new { data_bind = "value: Model.Description" })
        @Html.ValidationMessageFor(model => model.Description)
模型(用c#)表示):


我希望这有助于解决您的问题。

我很困惑:您的问题代码中没有与敲除相关的代码位?据我所知,没有数据绑定,没有客户端视图模型,没有应用绑定,什么都没有。你对我们到底有什么期望?@Jeroen我想他想把这段代码转换成使用Knockout。@JoseLuis可能是,但在这种情况下,这是一个非常广泛的问题,或者更可能是一个(架构)设计问题,与堆栈溢出的主题无关。事实上,我的代码如果更复杂,这是简化版。谢谢你的回答,但我正在使用parial view。也可以吗?我是否需要为每个模型属性输入数据?我所有的视图都是局部视图。我使用Ajax。您可以在我的“解决方案”中看到这个想法,并将其应用于您的问题。:-)是,为每个模型属性绑定数据。
        @Html.LabelFor(model => model.Description, "Description")
        @Html.TextAreaFor(model => model.Description, new { data_bind = "value: Model.Description" })
        @Html.ValidationMessageFor(model => model.Description)
    [Required]
    public string Description { get; set; }