2012-01-31 48 views
0

在一個MVC項目中,我試圖創建一個將重定向到ActionResult的HTML圖像按鈕。 這是一個搜索框。重定向到ActionResult的HTML圖像按鈕

目前我只是有這樣的事情:

<input type="text" id="Text1" name="seachKeyword" class="searchTextBox" value="Search" style="color:blue; " onfocus="this.value==this.defaultValue?this.value='':null"/> 

和按鈕:

<input type="image" src="somesrc" width="100" height="100" class="aaa" value="something" alt="something" /> 

而且我想用這兩樣東西的某種組合來替代它: 第一件事,要使按鈕成爲鏈接按鈕而不是提交按鈕。我想從搜索文本框中取出關鍵字並將其發送到搜索控制器:

<a href="somehow redirect to the search controller with the textbox value"> 
<img src="somesrc" alt="something" width="100" height="100" /> 
</a> 

這就是它現在的工作原理。應該以某種方式結合上面的代碼。

[HttpPost] 
public ActionResult Index(string id) 
{ 
    return RedirectToAction("Search", "Something", new { keyword = id, pageNumber = 1 }); 
} 

回答

0

使用在這種情況下,形式是語義上更正確的:

@using(Html.BeginForm("Search", "Something")) 
{ 
    <input type="text" id="Text1" name="keyword" class="searchTextBox" value="Search" style="color:blue;" onfocus="this.value==this.defaultValue?this.value='':null"/> 
    <input type="image" src="somesrc" width="100" height="100" class="aaa" value="something" alt="something" /> 
} 

這樣,在文本框中輸入的值將被點擊圖像時被自動發送到搜尋行動。

如果您確實需要使用鏈接(這不會在語義上正確),您需要使用javascript才能將文本框的值傳遞給單擊鏈接時的操作。例如,您可以編寫一個custom helper,它將生成適當的標記,然後在單獨的JavaScript文件中訂閱錨點的單擊事件,獲取文本框的值,將其附加到錨點上的href屬性值,取消錨定的默認操作和重定向到新的價值:

$(function() { 
    $('#id_of_anchor').click(function() { 
     var keyword = $('#id_of_search_textbox').val(); 
     var href = this.href; 
     if (href.indexOf('?') > -1) { 
      href += '&'; 
     } else { 
      href += '?'; 
     } 
     window.location.href = href + 'keyword=' + encodeURIComponent(keyword); 
     return false; 
    }); 
}); 
+0

感謝您的幫助:)現在它看起來就像你的榜樣(第一個),但我的「搜索」看起來像:公衆的ActionResult搜索(字符串關鍵字){...}而「關鍵字」是文本框的值。所以我怎麼能通過它/從這裏訪問它? tnx – user990635 2012-01-31 07:28:54

+0

@ user990635,如果您決定遵循我的建議並使用表單,那麼您應該簡單地給出文本輸入'name =「keyword」'。如果您決定使用錨點來使用JavaScript方式,那麼您應該簡單地使用'keyword'作爲查詢字符串參數:'window.location.href = href +'keyword ='+ encodeURIComponent(keyword);'。我已經更新了我的答案。 – 2012-01-31 07:31:26

+0

我用你的建議。完美的作品!非常感謝 – user990635 2012-01-31 07:34:51