सबसे पहले - मैं सी # और एमवीसी .net कोर, आदि के लिए बहुत नया हूं इसलिए मुझे यह समझने में कठिनाई हो रही है कि बुनियादी चीजें कैसे काम करती हैं। मेरे पास Html.BeginForm के साथ एक दृश्य है जो क्लिक पर मॉडल के गुणों को भरता है और नियंत्रक से एक फ़ंक्शन को कॉल करता है जो उन गुणों को मान्य करता है जो BeginForm में सेट किए गए थे। मैं नियंत्रक फ़ंक्शन को आंशिक दृश्य वापस करना चाहता हूं जो पेरेंट व्यू पर पॉप-अप के रूप में दिखाई देगा जिसे नियंत्रक कहा जाता है (यह सत्यापन के आधार पर अलग-अलग पॉपअप होंगे)। क्या इसे करने का कोई तरीका है? अब तक मेरे पास ऐसा कुछ है:

नियंत्रक:

PartialView CalledFromParentView(MyModel model)
{
  //validate model properites
  //..
  if (model.isValid)
  {
    return PartialView("PartialViewA, model);
  }
   else
   {
    return PartialView("PartialViewB, model);
   }
}

ActionResult CancelFromPartialViewA(MyModel model)
{
  return View("ParentView", model);
}

ActionResult SubmitFromPartialViewA(MyModel model)
{
  model.UpdateDB();
  return View("SomeHomePage");
}

ActionResult OKFromPartialViewB(MyModel model)
{
  return View("ParentView", model);
}

अभिभावक दृश्य:

@model myModel


<html>
<body>
    @using (Html.BeginForm("CalledFromParentView", "ControllerName", FormMethod.Post))
    {
        <h1> first model propery</h1>
        @Html.TextBoxFor(model => model.FirstProperty)
        <h1> second model proper</h1>
        @Html.TextBoxFor(model => model.SecondProperty)
        // etc.
        <p>
            <button type="submit"> submit properties</button>
        </p>
    }
    
</body>

</html>

आंशिक दृश्यए:

@model myModel


<html>
<body>
<p> model properties are valid. Are you sure you want to submit the information?</p>
<input type="button"
    value="submit"
    onclick="location.href='<%: Url.Action("SubmitFromPartialViewA", "controllerName") %>'"/>

<input type="button"
    value="cancel"
    onclick="location.href='<%: Url.Action("CancelFromPartialViewA", "controllerName") %>'"/>
</body>

</html>

आंशिक दृश्यबी:

@model MyModel

<html>
<body>
<p>The model properties are invalid please fix the following information:</p>
// will list models invalid properties
<input type="button"
         value="OK"
         onclick="location.href='<%: Url.Action("OKFromPartialViewB", "ControllerName") %>'" />
</body>
</html>

जैसा कि मैंने ऊपर उल्लेख किया है, मैं आंशिक विचारों को केवल आंशिक विचारों को प्रस्तुत करने के विरोध में मूल दृश्य पर पॉपअप के रूप में दिखाना चाहता हूं (जो इस समय मेरे पास है)। टीआईए !!

0
Daniella Kirsh 8 मार्च 2021, 16:31

1 उत्तर

सबसे बढ़िया उत्तर

आप आंशिक दृश्य का अनुरोध करने के लिए AJAX का उपयोग कर सकते हैं, फिर इसे बूटस्ट्रैप के साथ मोडल में प्रस्तुत कर सकते हैं। यहाँ नज़ारा है।

@model MyModel
@using (Html.BeginForm("CalledFromParentView", "home", FormMethod.Post))
{
    <h1> first model propery</h1>
    @Html.TextBoxFor(model => model.FirstProperty)
    <h1> second model proper</h1>
    @Html.TextBoxFor(model => model.SecondProperty)
    @*// etc.*@
    <p>
        <button type="submit" data-toggle="modal" data-target="#exampleModalLong"> submit properties</button>
    </p>
}

<!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                
            </div>
            
        </div>
    </div>
</div>
@section Scripts{
    <script>
        $("form").submit(function (e) {
            e.preventDefault()
            console.log($(this).serialize())
            $.ajax({
                url: '@Url.Action("CalledFromParentView", "home")',
                data: $(this).serialize(),
                success: function (data) {
                    $('.modal-body').html(data)
                    $('#exampleModalLong').show();
                },
                error: function (err) {

                }
            })
        });
    </script>
}

यह क्रिया CalledFromParentView है।

public ActionResult CalledFromParentView(MyModel model)
    {
        
        if (ModelState.IsValid)
        {
            return PartialView("PartialViewA", model);
        }
        else
        {
            return PartialView("PartialViewB", model);
        }
    }

इसे PartialViewA में एक फॉर्म प्रदान करना चाहिए:

@model MyModel

<p> model properties are valid. Are you sure you want to submit the information?</p>

@using (Html.BeginForm("SubmitFromPartialViewA", "home", FormMethod.Post))
{
  <h1> first model propery</h1>
  @Html.TextBoxFor(model => model.FirstProperty)
  <h1> second model proper</h1>
  @Html.TextBoxFor(model => model.SecondProperty)
  @*// etc.*@
  <p>
  <button type="submit" data-toggle="modal" data-target="#exampleModalLong"> submit</button>

  <button type="button"  data-dismiss="modal" aria-label="Close">
    cancel
  </button>
  </p>
}

और परिणाम।

enter image description here

0
Karney. 10 मार्च 2021, 08:55