2016-07-27 2 views
0

Я пытаюсь суммировать два числа, используя a из submit. HttpGet работает должным образом, но на представить в виде я не могу показать это в виду ..Модель не обязательна после публикации в MVC?

public class CalculatorController : Controller 
    { 
     // 
     // GET: /Calculator/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 
     [HttpGet] 
     public ActionResult Sum() 
     { 
      CalculatorModel model = new CalculatorModel(); 
      model.FirstOperand = 3; 
      model.SecondOperand = 4; 
      model.Result = model.FirstOperand + model.SecondOperand; 
      //Return the result 
      return View(model); 
     } 

     [HttpPost] 
     public ActionResult Sum(CalculatorModel model) 
     { 
      model.Result = model.FirstOperand + model.SecondOperand; 
      //Return the result 
      return View(model); 
     } 

    } 

@model HTMLHelpersDemo.Models.CalculatorModel 
@{ 
    ViewBag.Title = "Sum"; 
} 

<h2>Sum</h2> 

@using (Html.BeginForm("Sum", "Calculator", FormMethod.Post)) 
{ 
    <table border="0" cellpadding="3" cellspacing="1" width="100%"> 
     <tr valign="top"> 
      <td> 
       @Html.LabelFor(model => model.FirstOperand) 
       @Html.TextBoxFor(model => model.FirstOperand) 
      </td> 
     </tr> 
     <tr valign="top"> 
      <td> 
       @Html.LabelFor(model => model.SecondOperand) 
       @Html.TextBoxFor(model => model.SecondOperand) 
      </td> 
     </tr> 
     <tr valign="top"> 
      <td> 
       @Html.LabelFor(model => model.Result) 
       @Html.TextBoxFor(model => model.Result) 
      </td> 
     </tr> 
    </table> 
    <div style="text-align:right;"> 
     <input type="submit" id="btnSum" value="Sum values" /> 
    </div> 
} 

Первоначально он показывает 7, как 3 плюс 4

, но когда я изменил мой значение и опубликовать его, оно не показывает старое значение. Отлажено в контроллере, оно отлично отображается, но не публикуется для правильного просмотра.

ответ

4

Необходимо удалить предыдущее значение результата из словаря состояния модели. Для этого вы можете использовать метод ModelState.Clear().

[HttpPost] 
public ActionResult Sum(CalculatorModel model) 
{ 
    ModelState.Clear(); 
    model.Result = model.FirstOperand + model.SecondOperand;   
    return View(model); 
} 
+0

Спасибо, я нашел одну хорошую статью на эту тему @ https://blogs.msdn.microsoft.com/simonince/2010/05/05/asp-net-mvcs-html-helpers-render -The-неправильное значение / –

Смежные вопросы