Próbuję sprawdzić, że model jest null, czy nie, ale nie jestem w stanie rozwiązać problemu. Rendując główny widok, wykonałem częściowy widok w następujący sposób

Widok główny

<div class="modal fade" id="surveyPreviewModal" data-backdrop="static" data-keyboard="false" tabindex="-1" role="dialog" aria-labelledby="surveyPreviewLabel" aria-hidden="true">
    <div class="modal-lg modal-dialog">
        <div class="modal-content" id="surveyPreviewContent">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                    &times;
                </button>
                <h4 class="modal-title" id="surveyPreviewLabel">Survey Preview</h4>

            </div>
            <div class="modal-body" id="surveyPreviewBody">
                @Html.Partial("_surveyPreview")
            </div>
        </div>
    </div>
</div>

Iw częściowym widoku mam funkcję jak poniżej

@model LMS_TraineeSurveyPaginationViewModel
<script type="text/javascript">

function SurveyPreview(){
var surveyQuestionViewModel = @Html.Raw(Json.Serialize(Model.SurveyQuestionsViewModel.ToArray()));
var surveyQuestionOptionChoideViewModel= @Html.Raw(Json.Serialize(Model.SurveyQuestionOptionChoiceViewModel.ToArray()));

$.post('@Url.Action("SurveyPreview", "Survey")', { SurveyID : surveyID,` page : page },
             function (data) {

                 $('#surveyPreviewBody').html('');
                 $('#surveyPreviewBody').html(data);

                 SetProgressBar(page,'@(Model==null?0: Model.Pager.TotalPages)');

             }).fail(function () {
                 alert("error in GetTraineeSurvey");
             }).success(function () {

             });         
}
</script>

Tak więc, jednocześnie renderowanie częściowego widoku w tej funkcji (SurvePreview) daje błąd, ponieważ model jest zerowy i wyłączony biały ekran. Jeśli nie zadzwoniłem do funkcji, która znajduje się w częściowym widoku, to dlaczego sprawdza, czy model jest null, czy nie? Powinien być, gdy wykonuję funkcję, taką jak przycisk Kliknij przycisk?

Mam przycisku na głównym widoku, skąd pokazuję modal bootstrap i na "show" Metoda Bootstrap Modal powracam ten sam widok częściowy, aby powiązać dane w połączeniu Ajax. Poniższy kod jest napisany w częściowym widoku

 $(document).ready(function () {

        $('#surveyPreviewModal').on('show.bs.modal', function (e) {

            surveyID = $(e.relatedTarget).attr('data-surveyID');

            SurveyPreview(@SurveyPageTypePageNumber.StartPage,null);

        });

    })

I w kontrolerze.

public ActionResult SurveyPreview(int SurveyID, int page)
{
   ------ some code ------
    return PartialView("_SurveyPreview",viewModel);
}

Każda pomoc w tym jest mile widziana!

0
XamDev 17 luty 2017, 16:02

2 odpowiedzi

Najlepsza odpowiedź

Po załadowaniu częściowego widoku za pomocą @ html.partial ("_ SurveyPreview") wymagało LMS_TraineesurveyPaginationViewmodel, które nie są dostarczane

Więc zadzwonić do częściowego widoku, musisz coś napisać

@Html.Partial("_surveyPreview",new LMS_TraineeSurveyPaginationViewModel());
1
Dharmesh Kumar Laxkar 17 luty 2017, 14:57

Widok częściowy oczekuje modelu typu LMS_TraineeSurveyPaginationViewModel. Ale nie przechodzisz żadnego obiektu modelowego podczas renderowania partiatu z głównego widoku.

W PartialView {X0}} używa właściwości modelu. Ponieważ nie przechodzisz żadnego obiektu modelowego z głównego widoku, model jest nularny w widoku częściowym. Dlatego widzisz NullReferenceException.

Musisz więc upewnić się, że częściowy widok dostaje model.

Musisz podjąć różne podejście do renderowania częściowego widoku. Możesz użyć Html.Action, aby wywołać metodę akcji, która zwróci częściowy widok i renderowanie w głównym widoku.

Wymień następującą linię w głównym widoku

@Html.Partial("_surveyPreview")

Z

@Html.Action("SurveyPreview", new { SurveyID = "<<somesoveryId>>", page = "<<somepage>>"})

W ten sposób zadzwonię SurveyPreview działanie kontrolera za pomocą dostarczonych parametrów i zwróci częściowy widok z modelem i będzie renderowany.

Nie jestem pewien, jakie wartości mają zostać przekazane w SurveyID i page parametry, więc umieściłem tam symbole zastępcze. Musisz tam umieścić odpowiednie wartości.

1
Chetan Ranpariya 17 luty 2017, 15:45