0

I have a MVC partial view called BasicUserDetailsDisplay

 public PartialViewResult BasicUserDetailsDisplay(string id)
        {
            var user = userService.GetUserInfo(id);
            return PartialView("_BasicUserDetailsDisplay", user);
        }

BasicUserDetailsDisplay - partial view

    @model Udio.Data.ViewModels.UserItemViewModel
    @{
        ViewBag.Title = "Index";
        Layout = "~/Views/Shared/_LayoutMain.cshtml";
    }
            <div class="tab-content">
                    <!--User Reviews Tab-->
                    <div class="tab-pane active" id="reviews" role="tabpanel">
                        @Html.Action("UserReviewsTab", "User", new { id = Model.Id }) 
                    </div>                
                    @*Profile Settings Tab*@
                    <div class="tab-pane" id="profile_settings" role="tabpanel">
                        @Html.Action("UserProfileSettingsTab", "User", new { id = Model.Id })                    
                    </div>
                    <!--Nic/Passport Docs Tab-->
                    <div class="tab-pane" id="nic_docs_tab_id" role="tabpanel">
                        @Html.Action("NicPassportDocumentTab", "User", new { id = Model.Id })
                    </div>
                    @*Driving License Docs Tab*@
                    <div class="tab-pane" id="dlicense_docs_tab_id" role="tabpanel">
                        @Html.Action("DrivingLicenseDocumentTab", "User", new { id = Model.Id })
                    </div>

                    @*>Vehicle Docs Tab*@
                    <div class="tab-pane" id="vehicle_docs_tab_id" role="tabpanel">
                       @Html.Action("VehicleDocumentTab", "User", new { id = Model.Id })
                    </div>

</div>

and inside that I have 3 tabs as partial views those have form submissions. One tab is as follows:

public PartialViewResult NicPassportDocumentTab(string id)
{
    var user = userService.GetUserInfo(id);
    return PartialView("_NicPassportDocumentTab", user);
}
/// <summary>
/// To udate  nic/passport and do the verification
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult NicPassportDocumentTab(UserItemViewModel vm)
{

    try
    {
        ModelState.AddModelError("NicPassport", "NicPassport Can not be empty.");
        //if (!string.IsNullOrEmpty(vm.NicPassport))
        //{

            userService.UpdateUserDetails(vm);
            var user = userService.GetUserInfo(vm.Id);
            //return PartialView("UserProfileMain", user);

        //}
        //else
        //{
        //    ModelState.AddModelError("NicPassport", "NicPassport Can not be empty.");
        //}
    }
    catch (Exception ex)
    {
        ModelState.AddModelError("NicPassport", "Submission failed.");
    }
    return PartialView("UserProfileMain", vm);
}

NicPassportDocumentTab Partial view

@model Udio.Data.ViewModels.UserItemViewModel
               @using (Html.BeginForm((string)ViewBag.Action, "User", FormMethod.Post, new { @class = "form p-t-20", enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()

        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form p-t-20">
            <div class="form-group">
                @Html.LabelFor(model => model.NicPassport)
                <div class="input-group">
                    @Html.TextBoxFor(model => model.NicPassport, new { @class = "form-control  form-control-line" })
                    @Html.ValidationMessageFor(model => model.NicPassport, "", new { @class = "text-danger" })
                </div>
            </div>

            <div class="input-group">
                <div class="form-group">
                    <div class="icheck-list">
                        @Html.CheckBoxFor(model => model.IsNicPassPortVerified, new { @class = "check" })
                        @Html.LabelFor(model => model.IsNicPassPortVerified)
                    </div>
                </div>
            </div>

            <div class="text-left">
                <input type="submit" value="Verify" class="btn btn-success" />
            </div>
        </div>
        @Html.HiddenFor(model => model.DateOfBirth)
        @Html.HiddenFor(model => model.Gender)
        @Html.HiddenFor(model => model.FullName)
        @Html.HiddenFor(model => model.NicPassport)
        @Html.HiddenFor(model => model.NicPassportImage1)
        @Html.HiddenFor(model => model.NicPassportImage2)
        @Html.HiddenFor(model => model.PhoneNumber)
        @Html.HiddenFor(model => model.ProfilePictureUrl)
        @Html.HiddenFor(model => model.DrivingLicenseNo)
        @Html.HiddenFor(model => model.DrivingLicenseNoImage1)
        @Html.HiddenFor(model => model.DrivingLicenseNoImage2)
        @Html.HiddenFor(model => model.Email)
        @Html.HiddenFor(model => model.FacebookFriendsCount)
        @Html.HiddenFor(model => model.FacebookProfileUrl)
        @Html.HiddenFor(model => model.IdentificationType)
        @Html.HiddenFor(model => model.IsDriverInfoUpdated)
        @Html.HiddenFor(model => model.IsFacebookVerified)
        @Html.HiddenFor(model => model.IsDrivingLicenseVerified)
    }

Above post method execute continuosly and give me an error in the BasicUserDetailsDisplay partial view :

System.InsufficientExecutionStackException: 'Insufficient stack to continue executing the program safely. This can happen from having too many functions on the call stack or function on the stack using too much stack space.'

When I submit form and return to BasicUserDetailsDisplay(main partial view) I'm getting this above error.

Here is the UserProfileMain view:

@model Udio.Data.ViewModels.UserItemViewModel
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_LayoutMain.cshtml";
}


<div class="row">
    <!-- Column -->
    @*userbasic details display*@
    <div class="col-lg-4 col-xlg-3 col-md-5">
        <div class="card">
            @Html.Action("BasicUserDetailsDisplay", "User", new { id = Model.Id})             
        </div>
    </div>
    @*userbasic details display*@
    <!-- Column -->
    <div class="col-lg-8 col-xlg-9 col-md-7">
        <div class="card">
            <!-- Nav tabs -->
            <ul class="nav nav-tabs profile-tab" role="tablist">
                <li class="nav-item"> <a class="nav-link active" data-toggle="tab" href="#reviews" role="tab">Reviews</a> </li>
                <li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#profile_settings" role="tab">Profile Settings</a> </li>
                <li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#nic_docs_tab_id" role="tab">Nic/Passport Docs</a> </li>
                @if (Model.IsDriverInfoUpdated)
                {
                    <li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#dlicense_docs_tab_id" role="tab">Driving License Docs</a> </li>
                    <li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#vehicle_docs_tab_id" role="tab">Vehicle Docs</a> </li>
                }

            </ul>
            <!-- Tab panes -->
            <div class="tab-content">
                <!--User Reviews Tab-->
                <div class="tab-pane active" id="reviews" role="tabpanel">
                    @Html.Action("UserReviewsTab", "User", new { id = Model.Id }) 
                </div>                
                @*Profile Settings Tab*@
                <div class="tab-pane" id="profile_settings" role="tabpanel">
                    @Html.Action("UserProfileSettingsTab", "User", new { id = Model.Id })                    
                </div>
                <!--Nic/Passport Docs Tab-->
                <div class="tab-pane" id="nic_docs_tab_id" role="tabpanel">
                    @Html.Action("NicPassportDocumentTab", "User", new { id = Model.Id })
                </div>
                @*Driving License Docs Tab*@
                <div class="tab-pane" id="dlicense_docs_tab_id" role="tabpanel">
                    @Html.Action("DrivingLicenseDocumentTab", "User", new { id = Model.Id })
                </div>

                @*>Vehicle Docs Tab*@
                <div class="tab-pane" id="vehicle_docs_tab_id" role="tabpanel">
                   @Html.Action("VehicleDocumentTab", "User", new { id = Model.Id })
                </div>

            </div>
        </div>
    </div>
    <!-- Column -->
</div>

@section SectionTitle
{
   Profile
}
4
  • What is the value of your (string)ViewBag.Action and also show us your UserProfileMain view Commented Jul 12, 2017 at 7:09
  • (string)ViewBag.Action should replace with PartialViewAction method name. Commented Jul 12, 2017 at 8:03
  • @Rajshekar Reddy I updated the question and added UserProfileMain there. Commented Jul 12, 2017 at 8:05
  • I saw the code couple of times still unable to spot a issue.. So do you get this issue only when you post the form in NicPassportDocumentTab view .. also can you place a debugger in the code and traverse the execution ? Commented Jul 12, 2017 at 8:34

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.