2008-08-19 31 views
0

我想實現這樣的:創建具有CommandArgument按鈕自己的表在ASP.NET MVC

<div> 
    <table> 
     <thead> 
      <tr> 
       <td>Port name</td> 
       <td>Current port version</td> 
       <td>New port version</td> 
       <td>Update</td> 
      </tr> 
     </thead> 
     <% foreach (var ip in Ports) { %> 
      <tr> 
       <td> 
        <%= ip.PortName %> 
       </td> 
       <td> 
        <%= ip.CurrentVersion %> 
       </td> 
       <td> 
        <%= ip.NewVersion %> 
       </td> 
       <td> 
        <asp:Button ID="btnUpdate" runat="server" Text="Update" CommandArgument="<% ip.PortName %>" /> 
       </td> 
      </tr> 
      <% } %> 
    </table> 
</div> 

按鈕的CommandArgument財產是我的代碼抱怨不能夠解決符號ip。有沒有辦法做我想做的事情?

回答

3

你不想在ASP.NET MVC中使用Webforms按鈕。 MVC是一種完全不同的工作方式,您不再擁有WebForms抽象。

你有兩種不同的選擇,你可以用輸入標籤替換你的asp:Button或者使用標準的超鏈接。如果你使用輸入選項,那麼你將需要包裝在一個表單元素。表單操作應指向Controller操作。

0

我認爲你必須將你的區塊放在Form標籤ans runat = server中。

1

您不能在微不足道的方式中使用ASP.NET MVC中的webform控件,因爲它們依賴於在MVC中剝離的東西。相反,你有兩種方式添加一個按鈕,無論使用HtmlHelperViewPage

您可以在一個形式,這是很容易在控制器handeled如果你必須爲每個單獨的按鈕形式添加一個按鈕:

<% using(Html.BeginForm("Update", "Ip", new {portName = ip.PortName})) { %> 

    .... 
    <input name="action" type="submit" value="Update"> 

<% } %> 

BeginForm()將默認爲與創建視圖相同的控制器和操作。另一種方法是添加一個鏈接,這更適合您遍歷列表的示例。比如可以說你有IpController

<%= Html.ActionLink("Update IP", "Update", "Ip", 
     new { 
      portName = ip.PortName 
     }) 
%> 

該鏈接將轉到IpController更新動作與給定的端口名稱作爲參數。在這兩種情況下,您都需要在IpController中執行以下操作:

public ActionResult Update(string portName) { 
    // ... 
} 

希望這有所幫助。

0

FWIW,

我覺得這個文本丟失等號:

CommandArgument = 「<%ip.PortName%>」

應該

CommandArgument =」 <% = ip.PortName%>「

相關問題