2010-07-05 106 views
0

我只是在玩ASP.NET MVC 2進行學習。我可以通過我的模型查看,但花費1-2小時後,我不成功傳遞數據以查看。例如:我無法傳遞值來查看

www.example.com/home/show/asdf我正在嘗試獲取asdf字符串它在屏幕上。

public ActionResult Test(string ID) 
    { 
     return View(ID); 
    } 

用這種方法我試圖捕獲它。然後返回視圖。 在我看來,我使用<%:Html.LabelFor(m => m作爲字符串)%>。這可能看起來很愚蠢。我認爲所有字符串映射到方法,但不是整數,所以我想我必須使用問號這樣example.com/home/Test?asdf?我也會試試這個。

編輯:

將URL上的整數傳遞給方法參數讓我困惑。 example.com/home/test/2在這個URL中,2將是測試方法的參數,所以我認爲字符串是同樣的東西。我認爲我們只能傳遞整數,不可能與任何其他值做同樣的事情。所以我認爲我只能通過querystring捕獲值,所以我仍然可以通過簡單的字符串類型來查看?

+1

你可以添加 「ASDF」 的模式? – 2010-07-05 10:55:51

+0

任何代碼示例? – 2010-07-05 10:59:43

回答

3

你不能像這樣調用View函數。其實你可以,但它會尋找一個視圖命名你在URL中輸入的任何東西。它不會使用您的測試視圖。您不能將字符串作爲模型傳遞,因爲它必須是對象。檢查視圖方法重載。我建議你爲模型創建一個類,然後將其發送到視圖。

我建議像這樣。

public ActionResult Test(string id) 
{ 
    SomeModelClass model=new SomeModelClass(id); 
    return View(model); 
} 

如果你想傳遞一個字符串,你應該將它轉換爲這樣的

public ActionResult Test(string id) 
{ 
    return View((Object)id); 
} 
+0

順便說一句,你如何抓住url的字符串?當我測試它時,example.com/home/test/asdf沒有發現任何錯誤。 – Freshblood 2010-07-05 11:33:50

+1

你可以(但它通常不是最好的想法,因爲無論如何你可能需要更多的數據)。你只需將它轉換爲對象,並調用正確的重載:return View((object)id); – 2010-07-05 11:34:19

+0

當我測試它,我看到ID爲空 – Freshblood 2010-07-05 11:40:43

0

對象嘗試

public ActionResult Test(string ID) 
{ 
return View("Test", ID); 
} 
+0

其實它不會工作。有兩個字符串參數的View方法的重載。它不會通過ID作爲模型 – 2010-07-05 11:39:29

+0

啊是好點,忘了主名稱... – JonoW 2010-07-05 12:08:56

1
public ActionResult Test(string ID) 
{ 
ViewData["ID"] = ID 
return View(); 
} 



<p> 


<div class="simple"> 
<%= Html.Encode(ViewData["ID"]) %> 
</div>