ASP.NET MVC-Teilansicht Problem, wenn Sie ein Formular Einreichen

Ich versuche zu zeigen eine Teilweise Blick in einen master - (Index) - Ansicht:

Schritte:

  1. Benutzer wählt aus einem Dropdown-Element aus der Index-Ansicht.
    • Dies zeigt eine Teilansicht, die ein search-Form.
  2. Benutzer füllt ein Suchformular aus und klickt dann auf die Schaltfläche Senden.
  3. Wenn die such-Formular gültig ist, wird eine neue Seite (Ergebnisse Anzeigen) angezeigt werden.
  4. Anderes, die suchen Form, Teilweise mit Sicht sollte wieder angezeigt, dass Fehler in der master-Ansicht

Ich habe ein problem mit der Nummer 4, weil, wenn der such-Formular sendet, es wird nur angezeigt,
die teilweise Ansicht in einem neuen Fenster. Ich möchte die Anzeige der ganzen Seite : Index-View + Teilansicht mit Fehler.

Vorschläge? Dies ist, was ich habe:

Bild

ASP.NET MVC-Teilansicht Problem, wenn Sie ein Formular Einreichen

Controller

public class AppController : Controller
{
    public ActionResult Index()
    {
        return View(new AppModel());
    }

    public ActionResult Form(string type)
    {
        if (type == "IOS")
            return PartialView("_IOSApp", new AppModel());
        else
            return PartialView("_AndroidApp", new AppModel());
    }

    public ActionResult Search(AppModel appModel)
    {
        if (ModelState.IsValid)
        {
            return View("Result");
        }
        else //This is where I need help
        {
            if (appModel.Platform == "IOS")
                return PartialView("_IOSApp", appModel);
            else
                return PartialView("_AndroidApp", appModel);
        }
    }
}

Modell

public class AppModel
{
    public string Platform { get; set; }
    [Required]
    public string IOSAppName { get; set; }
    [Required]
    public string AndroidAppName { get; set; }        
    public List<SelectListItem> Options { get; set; }

    public AppModel()
    {
        Initialize();
    }

    public void Initialize()
    {
        Options = new List<SelectListItem>();

        Options.Add(new SelectListItem { Text = "IOS", Value = "I" });
        Options.Add(new SelectListItem { Text = "Android", Value = "A"});
    }
}

Index.cshtml

@{ ViewBag.Title = "App Selection"; }

<h2>App Selection</h2>

@Html.Label("Select Type:")
@Html.DropDownListFor(x => x.Platform, Model.Options)

<div id="AppForm"></div> //This is where the Partial View goes

_IOSApp.cshtml

@using (Html.BeginForm("Search", "App"))
{
    @Html.Label("App Name:")
    @Html.TextBoxFor(x => x.IOSAppName)
    <input id="btnIOS" type="submit" value="Search IOS App" />
}

AppSearch.js

$(document).ready(function () {

$("#Platform").change(function () {

    value = $("#Platform :selected").text();

    $.ajax({
        url: "/App/Form",
        data: { "type": value },
        success: function (data) {
            $("#AppForm").html(data);
        }
    })
});

});
warum nicht @Ajax.BeginForm(...)
Das ist, was ich verwende - Blick auf meine _IOSAPP.cshtml. Wenn das Formular abschickt, obwohl, geht es auf die Suche action-Methode, und wenn das Modell nicht gültig ist, es ist die Anzeige nur teilweise anzeigen. Was ich will, ist die ganze Seite (die Index-Ansicht + Teilansicht mit Fehler)
ich meine, die Ajax verwenden.BeginForm nicht Html.BeginForm,so, wenn senden,gehen Sie zu such-Aktion,wenn gilt,zurück eine Teilansicht mit der suchergebnis-update auf der Seite,wenn nicht gültig,zurück eine Teilansicht mit der Fehlermeldung update-Seite.füllen Sie die Anfrage ist ein ajax-post-request

InformationsquelleAutor nv.snow | 2014-01-05

Schreibe einen Kommentar