Wie zu verwenden ViewModels in ASP.NET MVC?

Ich habe gerade angefangen zu lernen über ViewModels in ASP.NET MVC. So, ich dachte, der Implementierung eines Beispiel wie folgt:

Unternehmen

public class AddModel
{
    public int a { get; set; }
    public int b { get; set; }

    public int Add()
    {
        return (this.a + this.b);
    }
}

Hinzufügen ViewModel

public class AddViewModel
{
    public AddModel addModel;
    public int Total { get; set; }
}

Controller

public class AddController : Controller
{
    [HttpPost]
    public JsonResult Add(AddViewModel model)
    {

        int iSum = model.addModel.a + model.addModel.b;
        model.Total = iSum;
        return Json(model);

    }

    public ActionResult Index()
    {
        return View();
    }
}

Ansicht Umsetzung

@model ViewModelApplication.AddViewModel
<script type="text/javascript" src="../../Scripts/MicrosoftAjax.js"></script>
<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
<script type="text/javascript">
    function Callback(data) {
        alert("I am sucess call");
    }

    function Failed() {
        alert("I am a failure call");
    }
</script>

@using (Ajax.BeginForm("Add", "Add", new AjaxOptions { OnSuccess = "Callback", OnFailure = "Failed" }))
{
    <table align="center">
        <tr>
            <td class="tdCol1Align">
                <label>
                    Number1</label>
            </td>
            <td class="tdCol2Align">
                @Html.TextBoxFor(Model => Model.addModel.a)
            </td>
        </tr>
        <tr>
            <td class="tdCol1Align">
                <label>
                    Number2</label>
            </td>
            <td class="tdCol2Align">
                @Html.TextBoxFor(Model => Model.addModel.b)
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="submit" value="Add" class="button" />
            </td>
        </tr>
    </table>
}

Hier das problem, dass ich nicht in der Lage zum abrufen der eingegebenen Werte in die Textfelder, wenn der Add button geklickt werden; das entsprechende AJAX-Aktion wird es.

Wenn ich versuche auf die Werte von a und b bekomme ich null anstelle der eingegebenen Werte in die Textfelder eingeben.

Ich bin mir nicht sicher, wohin ich gehe falsch. Bitte helfen Sie.

  • Sehen Sie die erwarteten Werte in die Formular-Sammlung? Ich bin mir nicht ganz sicher, aber da Ihr tun eine AJAX-postback ich glaube, dass Sie model ist, die serialisiert werden, wenn Sie ein postback. Die Steuerung kann nicht erkennen, daß es mehr als ein viewmodel, sondern sieht es als eine Sammlung von geposteten Werte. Aber nochmal, ich bin nicht sicher, ob dies ist, was passiert ist..
  • ich konnte sehen, wie die Werte in die Formular-Sammlung
  • Im Allgemeinen ist es nicht eine gute Idee, um das Modell als Teil des ViewModel.
  • Stimme mit dir..aber was ist die alternative zu ihm..
InformationsquelleAutor Sai Avinash | 2013-12-02
Schreibe einen Kommentar