Переверните экземпляр модели через контроллер, чтобы вернуться к просмотру. - PullRequest
0 голосов
/ 06 февраля 2020
  • Я создал модель, создал экземпляры модели в контроллере

  • Я хочу отправить данные этого экземпляра в частичное представление (не работает)

Модель

 public partial class userDaty_Model
    {
        public int liczbaDniM { get; set; }

        public int numerMiesiacaM { get; set; }

        public int numerRokuM { get; set; }
    }



// which is part of ParentView


public partial class ParentView
    {
        public userDaty_Model Model4 { get; set; }
    }

Ajax код в главном виде, из которого я вызываю частичный вид.

 var userDate = {
             numerMiesiaca: $("#id_sb_month").dxSelectBox("instance").option("value"),
             numerRoku: $("#id_sb_year").dxSelectBox("instance").option("value"),
             liczbaDni: liczbaDni
         };


        $.ajax({

            url: "@Url.Action("PartialTabelaEcp", "Home")",
            type: "POST",
            dataType: "json",
            data: {"userDate": JSON.stringify(userDate)},
            cache: false,
            success: function (data) {
                $("#kartaEcp").html(data);
            },
            failure: function (error) {
                alert(error);

            },
            error: function (error) {
                alert(error);
            }
        });

Контроллер:

 [HttpPost]
        public ActionResult PartialTabelaEcp(string userDate)
        {
int liczbaDni =2;
int numerMiesiaca = 6;
int numerRoku = 12;

userDaty_Model userDaty = new userDaty_Model();
            userDaty.liczbaDniM = liczbaDni;
            userDaty.numerRokuM = numerMiesiaca;
            userDaty.numerMiesiacaM = numerRoku;


// return, which returns the view
 return PartialView(@"~/Views/Home/_TabelaEwidencja.cshtml");

// return who I want to return but gives me nothing
 return PartialView(@"~/Views/Home/_TabelaEwidencja.cshtml", userDaty );
}


***edit
 I changed and I have "return PartialView("_TabelaEwidencja", userDaty);"and it is still the same as it was

Я устанавливаю красную точку для возврата, когда нет экземпляра модели 'userDate', через которую она проходит возврат

В случае ошибки

jquery. js: 9837 POST https://localhost: 44362 / Home / PartialTabelaEcp 500 (Внутренняя ошибка сервера)

после: Ошибка

Не удалось загрузить ресурс: сервер ответил со статусом 500 (Внутренняя ошибка сервера)

partView

@model ParentView


// ...

кто-нибудь знает, что я делаю не так?

Ответы [ 3 ]

1 голос
/ 07 февраля 2020

Изменить, как показано ниже:

1. Ajax (изменить с dataType:"json" на dataType:"html"):

$.ajax({
    url: "@Url.Action("PartialTabelaEcp", "Home")",
    type: "POST",
    dataType: "html",   
    data: {"userDate": JSON.stringify(userDate)},
    cache: false,
    success: function (data) {
        $("#kartaEcp").html(data);
    }
});

2.Контроллер:

[HttpPost]
public ActionResult PartialTabelaEcp(string userDate)
{
    int liczbaDni = 2;
    int numerMiesiaca = 6;
    int numerRoku = 12;

    userDaty_Model userDaty = new userDaty_Model();
    userDaty.liczbaDniM = liczbaDni;
    userDaty.numerRokuM = numerMiesiaca;
    userDaty.numerMiesiacaM = numerRoku;

    var data = new ParentView()
    {
        Model4 = userDaty
    };
    return PartialView("~/Views/Home/_TabelaEwidencja.cshtml", data);
}
0 голосов
/ 06 февраля 2020

Это потому, что вы не можете вернуть полные пути к представлениям, представления всегда относятся к папке внутри папки Views и имени контроллера (это можно изменить, конечно), как, например:

/Views/Home
/Views/Admin

Итак, вы должны вместо этого звонить:

return PartialView("_TabelaEwidencja", userDaty);

Также, на ваш взгляд, объявите правильный тип модели: либо userDaty_Model, либо dynamic, это использует @model ключевое слово.

0 голосов
/ 06 февраля 2020

Вы должны использовать правильную модель в своей модели @, если вы дадите ему модель Daty, но скажите, что это модель родительского вида, она выдает ошибку

...