title: How to correctly use Partial views with Ajax Begin form
body: <p>I have the following code, in my index.cshtml</p>
  
  <pre><code>@using Kendo.Mvc.UI;
  @using xx.Relacionamiento.Modelo.Bussiness.Entities;
  @using xx.Relacionamiento.Modelo.Bussiness.Entities.Custom;
  
  &lt;script src="~/Scripts/jquery.unobtrusive-ajax.min.js"&gt;&lt;/script&gt;
  &lt;script src="~/Scripts/jquery.validate.js"&gt;&lt;/script&gt;
  &lt;script src="~/Scripts/jquery.validate.unobtrusive.min.js"&gt;&lt;/script&gt;
  
  @model PresupuestosGenerale
  
  @{
      ViewBag.Title = "Index";
      Layout = "~/Views/Shared/_Layout.cshtml";
  
      }
  
  &lt;div class=""&gt;
  
      &lt;div id="ContenedorPresupuestoGeneral"&gt;
          @Html.Partial("CreateOrEditPresupuestoGeneralxx", Model)
      &lt;/div&gt;
      &lt;br /&gt;
      &lt;br /&gt;
  </code></pre>
  
  <p>Then I have the following PartialView</p>
  
  <pre><code>@using xx.Relacionamiento.Modelo.Bussiness.Entities.Enumeraciones;
  @using xx.Relacionamiento.Modelo.Bussiness.Entities;
  @using Kendo.Mvc.UI;
  
  
  @model PresupuestosGenerale
  &lt;div class="panel panel-default"&gt;
      &lt;div class="panel-heading"&gt;
          @using (Ajax.BeginForm("CreateOrEditPresupuestoGeneralxx", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "ContenedorPresupuestoGeneral", InsertionMode = InsertionMode.Replace }))
          {
              @Html.HiddenFor(h =&gt; h.PresupuestoGeneralId)
              @Html.Hidden("Categoria",CategoriaEvento.xx.ToString())
              &lt;div class="row"&gt;
                  &lt;div class="col-lg-6 col-md-6 col-sm-6 col-xs-6"&gt;
                      &lt;label&gt;Presupuesto Global xx&lt;/label&gt;
                      &lt;br /&gt;
                      @(Html.Kendo().NumericTextBoxFor(e =&gt; e.PresupuestoGlobal)
                      .Decimals(0)
                      .DecreaseButtonTitle("Decrementar")
                      .IncreaseButtonTitle("Incrementar")
                      .Format("c0")
                      .HtmlAttributes(new { style = "width:99%;" })
                      .Max(1000000000000000000)
                      .Min(1)
                      .Step(100000)
                      .Placeholder("Presupuesto General xx"))
                      @Html.ValidationMessageFor(v =&gt; v.Valor, "", new { @style = "color: rgba(247, 20, 10, 0.97);" })
                  &lt;/div&gt;
                  &lt;div class="col-md-3"&gt;
                      &lt;br /&gt;
                      &lt;input type="submit" class="form-control btn btn-primary" value="Guardar Presupuesto" onclick="SetMostrarVentana();" /&gt;
                  &lt;/div&gt;
              &lt;/div&gt;
          }
  
  
      &lt;/div&gt;
  &lt;/div&gt;
  &lt;script type="text/javascript"&gt;
  
      $(function () {
          MostrarVentanaLoading = false;
          @if (!string.IsNullOrEmpty(ViewBag.MensajeError))
          {
              @:mostrarMensajeAlertGlobal("@ViewBag.MensajeError",15000)
          }
          else if (!string.IsNullOrEmpty(ViewBag.MensajeSuccess))
          {
              @:mostrarMensajeAlertSuccessGlobal("@ViewBag.MensajeSuccess", 15000);
          }
      });
  
  &lt;/script&gt;
  </code></pre>
  
  <p>Then on my controller I have business logic that returns something different depending on conditions</p>
  
  <pre><code> public ActionResult CreateOrEditPresupuestoGeneralxx(PresupuestosGenerale presupuestoGeneralxx)
          {
              try
              {
                  ModelState.Remove("PresupuestoGlobal");
  
                  if (presupuestoGeneralxx == null)
                  {
                      return PartialView();
                  }
                  if (!ModelState.IsValid)
                  {
                      return PartialView(presupuestoGeneraxx);
                  }
  
                  if (presupuestoGeneralxx.Valor &lt; 1)
                  {
                      ModelState.AddModelError("Valor", "Por favor ingrese un presupuesto total");
                      return PartialView(presupuestoGeneralxx);
                  }
  </code></pre>
  
  <p>So, when the user submits the form, the container from the index view is replaced with the new html.</p>
  
  <p>The code works perfectly fine, however I feel that the code is ugly, not maintainable and difficult to read.</p>
  
  <p>My questions, is, with asp.net mvc and ajax is there a better and more organized way to achieve the same thing with more readable code?</p>