2017-01-15 3 views
1

ASP.NET MVCで電卓を行う必要があります。 最初はコントローラの入力フィールドから値を受け取り、それに文字列 "123"を接頭します。最後に、受け取った表現を処理し、結果を返します。ビューでASP.NET MVCのモデルに基づいてビューのフィールドを更新

namespace CalculatorCloud.Models { 
    public class Calculator 
    { 
     public string nr { get; set; } 
    } } 

私はモデルを使用しています:

私は、次のモデルを持っている

@model CalculatorCloud.Models.Calculator 

@{ 
    ViewBag.Title = "Calculator"; 
} 

@using (Html.BeginForm("Index", "Home")) 
{ 
<div> 
    <div class="header"> 
     @Html.TextBoxFor(m => m.nr, new { @id = "nr"}) 
     <input type="button" id="C" name="C" value="C" /> 
     <input type="button" id="back" name="back" value="<-" /> 
[...] 

    <div class="sum"> 
     <input type="submit" value="=" /> 
    </div> 
</div> 
} 

コントローラは、このようなものです:私は、次のしている

namespace CalculatorCloud.Controllers 
{ 
    public class HomeController : Controller 
    { 
     Calculator model = new Calculator(); 

     public ActionResult Index(string nr) 
     { 
      model.nr = "123" + nr; 
      return View(model); 
     } 

    } 
} 

問題:送信ボタンを押すと、テキストボックスに表示されることを期待しています文字列 "123"の接頭辞が付いたテキストボックスに表示されます。 これで、文字列 "123"のないテキストボックスの値が保持されるようになりました。

誰かがこれを手伝ってくれますか? ありがとうございました! :)

答えて

2

あなたがModelStateからそれを削除する必要がありますポストバックアクションでモデルのプロパティの値を変更する場合:

public ActionResult Index(string nr) 
{ 
    ModelState.Remove("nr"); 
    model.nr = "123" + nr; 
    return View(model); 
} 

この理由は、このようなTextBoxFor意志としてそのHtmlのヘルパーです最初にModelStateに存在する値を見てから、その値をレンダリングするときにはビューモデルプロパティで調べます。これは設計によるものです。

関連する問題