2010-05-29 11 views
1
<div id="4591" > 
      <input type="text" id="Title1" name="Title1" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

<div id="4592" > 
      <input type="text" id="Title2" name="Title2" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

    <div id="4593" > 
      <input type="text" id="Title3" name="Title3" value="a" /> 
      <input type="submit" name="button" value="Save" /> </div> 

這是瀏覽器生成的HTML源代碼的複製粘貼版本,它清楚地表明我正在生成頁面上的動態字段。 文本框中的名稱是數據庫中的字段。 按下其中一個保存按鈕後,我將如何發送特定的文本框名稱和值到要更新的控制器操作。asp.net mvc獲取點擊按鈕的編號

回答

10

給你的提交按鈕的名稱:

<div id="4591"> 
    <input type="text" id="Title1" name="Title1" value="a" /> 
    <input type="submit" name="button4591" value="Save" /> 
</div> 

<div id="4592"> 
    <input type="text" id="Title2" name="Title2" value="a" /> 
    <input type="submit" name="button4592" value="Save" /> 
</div> 

<div id="4593"> 
    <input type="text" id="Title3" name="Title3" value="a" /> 
    <input type="submit" name="button4593" value="Save" /> 
</div> 

然後在你的控制器動作檢查請求的參數。你會看到一個帶有點擊按鈕名稱的參數將被傳遞:

[HttpPost] 
public ActionResult Index() 
{ 
    string id = Request.Params 
     .Cast<string>() 
     .Where(p => p.StartsWith("button")) 
     .Select(p => p.Substring("button".Length)) 
     .First(); 
    return View(); 
} 
+0

當然,我會說一個美妙的解決方案 – maztt 2010-05-30 09:29:41

+0

非常整潔的想法。 +1與Linq做到這一點。只有一個問題:是必要的id和名稱屬性,還是隻有一個足夠? – draconis 2011-04-13 11:22:07

+0

@draconis名字就夠了。 – refactor 2015-06-17 09:52:51