Como usar ViewModels no asp.net MVC?
Acabei de começar a aprender sobre ViewModels no ASP.NET MVC. Então, pensei em implementar um exemplo de exemplo como abaixo:
Entidade de negócios
public class AddModel
{
public int a { get; set; }
public int b { get; set; }
public int Add()
{
return (this.a + this.b);
}
}
Adicionar ViewModel
public class AddViewModel
{
public AddModel addModel;
public int Total { get; set; }
}
Controlador
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();
}
}
Visualizar implementação
@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>
}
O problema aqui é que eu não consigo recuperar os valores inseridos nas caixas de texto sempre queAdd
botão é clicado; a ação AJAX correspondente é a mesma.
Quando tento acessar os valores dea
eb
, Recebo valores nulos em vez dos valores inseridos nas caixas de texto.
Não tenho certeza de onde estou indo errado. Por favor ajude.