Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ValidationErrorAttribute : FilterAttribute, IExceptionFilter
- {
- public virtual void OnException(ExceptionContext filterContext)
- {
- if (filterContext == null)
- {
- throw new ArgumentNullException("filterContext");
- }
- if (filterContext.Exception != null)
- {
- filterContext.ExceptionHandled = true;
- filterContext.HttpContext.Response.Clear();
- filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
- filterContext.HttpContext.Response.StatusCode =
- (int)System.Net.HttpStatusCode.BadRequest;
- //return the partial view containing the validationsummary and set the ViewData
- //so that it displays the validation error messages
- filterContext.Result = new PartialViewResult { ViewName = "validation",
- ViewData = filterContext.Controller.ViewData };
- }
- }
- }
- //Controller
- [HttpPost]
- [ValidationErrorAttribute]
- public ActionResult Save(ConsumptionData consumptionData)
- {
- if (ModelState.IsValid)
- {
- var dto = Mapper.Map<ConsumptionData, ConsumptionDataDto>(consumptionData);
- var refId = _personalProjectionRepository.AddPersonalProjectionRecord(dto);
- consumptionData.ReferenceId = refId;
- return PartialView("Reference", consumptionData);
- }
- else
- {
- throw new ValidationException();
- }
- }
- @model PersonalProjection.Web.Models.ConsumptionData
- @Html.ValidationSummary()
- $('form').submit(function () {
- var form = $(this);
- if (form.valid())
- {
- $.ajax({
- url: form.attr("action"),
- type: "POST",
- dataType: "html",
- contentType: "application/json; charset=utf-8",
- data: JSON.stringify({
- SiteId: $('#siteid').val(),
- ElectricityConsumption: $('#electricityconsumption').val(),
- ElectricitySpend: $('#electricityspend').val(),
- GasConsumption: $('#gasconsumption').val(),
- GasSpend: $('#gasspend').val()
- }),
- success: function (result) {
- $('#rightPanelSection').html(result);
- },
- error: function (jqXHR) {
- $('#validationSummary').html(jqXHR.responseText);
- }
- });
- }
- return false;
- });
- <div class="panel panel-outcome">
- @using (Html.BeginForm("Save", "Home", FormMethod.Post, (object)new { ID =
- "projectionForm" }))
- {
- <div id="validationSummary"/>
- <div id="topPanelSection" class="panel-section">
- @Html.LabelFor(m => m.SiteId, new { id = "siteidlabel" })
- @Html.TextBoxFor(m => m.SiteId, ViewBag.TextBoxDisabled ? (object)new { id =
- "siteid", disabled = true, maxlength = 9, @class = "input-disabled", @Value =
- ViewBag.SiteId } : new { id = "siteid", maxlength = 9 })
- <span id="errorText" class="error-text" />
- </div>
- <div id="leftPanelSection" class="panel-section">
- <div class="column-heading">
- <span class="column-heading-left">Total Cost</span>
- <span class="column-heading-right">Total Consumption</span>
- </div>
- <div class="panel-section-row">
- @Html.LabelFor(m => m.ElectricitySpend, new { id = "electricitylabel" })
- <span>£</span>
- @Html.TextBoxFor(m => m.ElectricitySpend, new { @class = "textbox-right-
- margin", id = "electricityspend" })
- @Html.TextBoxFor(m => m.ElectricityConsumption, new { @class = "textbox-
- left-margin", id = "electricityconsumption" })
- <span>kWhs</span>
- </div>
- <div class="panel-section-row">
- @Html.LabelFor(m => m.GasSpend, new { id = "gaslabel" })
- <span>£</span>
- @Html.TextBoxFor(m => m.GasSpend, new { @class = "textbox-right-margin", id =
- "gasspend" })
- @Html.TextBoxFor(m => m.GasConsumption, new { @class = "textbox-left-margin",
- id = "gasconsumption" })
- <span>kWhs</span>
- </div>
- <div class="panel-section-row">
- <button type="reset" id="resetbutton">Reset Form</button>
- <button type="submit">Generate Reference Id</button>
- </div>
- </div>
- <div id="rightPanelSection" class="panel-section">
- @Html.Partial("Reference", Model)
- </div>
- $('#validationSummary').html(jqXHR.responseText);
- <div id="validationSummary"/>
- <div id="validationSummary">
- </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement