Comment utiliser Viewmodel dans ASP.NET MVC?

J'ai juste commencé à apprendre à propos Viewmodel dans ASP.NET MVC. Donc, j'ai pensé à la mise en œuvre d'un échantillon de exemple comme ci-dessous:

Entité Commerciale

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

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

Ajouter ViewModel

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

Contrôleur

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();
    }
}

Vue De La Mise En Œuvre

@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>
}

Le problème ici est que je n'arrive pas à récupérer les valeurs saisies dans les zones de texte à chaque fois que le Add bouton est cliqué; AJAX d'action est en cours.

Lorsque j'essaie d'accéder aux valeurs de a et b, j'obtiens des valeurs null à la place des valeurs saisies dans les zones de texte.

Je ne suis pas sûr de l'endroit où je vais mal. S'il vous plaît aider.

Voyez-vous les valeurs attendues dans le formulaire de collecte? Je ne suis pas tout à fait sûr, mais puisque vous faites un AJAX-publication, je crois que vous modèle est sérialisé lorsque vous effectuez une publication. Le contrôleur peut ne pas le reconnaître plus comme un viewmodel, mais il voit comme une collection de valeurs envoyées. Mais encore une fois, je ne suis pas sûr que c'est ce qui se passe..
je pouvais voir les valeurs dans le formulaire de collecte de
En général, il n'est pas une bonne idée d'inclure le Modèle dans le cadre de la ViewModel.
d'accord avec vous..mais quelle est l'alternative à ça..

OriginalL'auteur Sai Avinash | 2013-12-02