2017-04-09 14 views

答えて

-1

また、情報ライフサイクルの異なるViewBag、ViewData、TempDataを使用して、ビューに情報を渡すこともできます。

このチェック:あなたは直接このようなプロパティを使用することはできませんので、モデルが辞書に関連付けられているあなたの例では http://royalarun.blogspot.com.ar/2013/08/viewbag-viewdata-tempdata-and-view.html

ご例えば

とちょうどあなたがこのような任意の操作を行うことができ、コントローラからのみの文字列を渡す: 公共のActionResult MyController(文字列のmyString) { リターンビュー(モデル:のmyString);
}

と.cshtmlで(あなたがC#のを使用している場合)

@model string 
@{ 
    var text = Model; 
} 
@Html.EditorFor(m => text); 

しかし、私は@Stephen Muecke応答のような文字列プロパティを持つviewMoedelを渡すPrefill Html Editor Asp.net MVC

よりよい解決策だと思います
+0

間違っています - オブジェクトにキャストする必要があります(パラメータがビュー名のオーバーロードを呼び出す場合は別です) –

+0

はい、正しくありますが、例ではモデルのパラメータ宣言を使用して、もう一度見てください:) @ Stephen Muecke –

+0

これは問題ありませんが、あなたの最初の声明は間違っていて誤解を招く(OPの使用は問題ありませんでした)! –

1

まず、Actionメソッドの名前を変更することをお勧めします。なぜあなたはMyControllerのように名前をつけますか?意味のあるメソッド名でなければなりません。

問題が発生しました。あなたのビューがフォームのポストではなく表示目的のみの場合は、文字列をviewbagにバインドしてビューにレンダリングすることができます。あなたのアクションメソッド、

ViewBag.MyString = myString; 

そして、あなたのビューで、例えば

<p>@ViewBag.MyString</p> 

しかし、あなたはビューで文字列を編集した後、送信ボタンをクリックした場合、それがなければなりませんサーバーに値を送信してから、

public class MyStringModel 
{ 
    public string MyString { get; set; } 
} 

のように、view modelを作成してくださいこの方法は、あなたのビューで次に

public ActionResult MyController(string myString) 
{ 
    MyStringModel = new MyStringModel(); 
    MyStringModel.MyString = myString; 
    return View(MyStringModel) 
} 

@model MyStringModel 
@Html.EditorFor(m => m.MyString) 

を参照してください、あなたはpost backにあなたのビューで文字列データを@HTML.BeginFormsubmit buttonを追加する必要があります。

希望します。

関連する問題