2017-04-09 39 views
0

我有這樣的控制器:如何從控制器傳遞一個字符串在ASP.NET查看MVC5

public ActionResult MyController(string myString) 
{ 
    return View((object)myString); 
} 

我試圖傳遞字符串來查看這樣的:

@model string 
@Html.EditorFor(m => m) 

我獲取值不能爲空錯誤。我怎樣才能解決這個問題?謝謝。

+0

請參閱[這個問題/答案](http://stackoverflow.com/questions/43309582/prefill-html-editor-asp-net-mvc)如何處理這個問題。 –

回答

-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); 

但我認爲這是一個更好的解決方案傳遞viewMoedel有一個字符串屬性,如@Stephen Muecke響應Prefill Html Editor Asp.net MVC

+0

錯誤 - 它確實需要被轉換爲'object'(其他方式如果在參數是視圖名稱的情況下會調用超載) –

+0

是的你是對的,但在示例中我使用了模型參數聲明,再看一次:) @斯蒂芬Muecke –

+0

這很好,但你的第一個陳述是錯誤的和誤導(OP的使用很好)! –

1

首先,我會建議更改您的Action方法名稱。爲什麼你把它命名爲MyController。它應該是一個有意義的方法名稱。

然後來到你的問題。如果您的視圖僅用於展示目的,而不是表單發佈,那麼您可以將您的字符串綁定到viewbag並在視圖中呈現。

例如,在你的操作方法,

ViewBag.MyString = myString; 

而且在你看來,

<p>@ViewBag.MyString</p> 

但是,如果你要編輯字符串中視圖和後點擊提交按鈕,它應該值發佈到服務器,然後創建一個view model,例如,

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

在你的行動方法,

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

然後,

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

看,你需要在你的視圖中添加@HTML.BeginFormsubmit buttonpost back您的字符串數據。

希望它有幫助。

相關問題