2011-02-10 72 views
0

在我的一個觀點中,我得到了一個INPUT字段,我放置了光標並通過閱讀器掃描了MagCard。這會導致在該框中出現一系列字符,以ENTER(char 13)結尾,我通過jQuery捕獲並將表單發送到另一個頁面進行處理。MVC3 Razor>輸入字段

基本上我希望輸入框中的字符串在控制器中可用,所以我可以使用c#函數處理它,而不是通過javascript完成所有客戶端。

從客戶端代碼獲取託管代碼的值似乎沒有找到迄今爲止發現的所有指南。

任何幫助表示讚賞,我之所以對POST而不是GET是因爲它充滿了特殊的字符,?以及需要保留的空格。

任何方法都將被評估。

@Darin Dimitrov 對不起,我不清楚。

雖然你的建議有效,並引導我一點我所需要的。 (這將很方便知道,不管是什麼。)

因爲我不是真的想要一個返回值,所以我試圖發佈到Home/ProcessScan作爲我的表單的動作。然後在我的控制器做到這一點:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ProcessScan(string scanSeek) 
    { 
     string myScan = scanSeek; 
     string name = myScan.Substring(1, 13); 
     return Redirect("../reservation?name=" + name); 
    } 

而這現在適用於我。只好:
*使用的[AcceptVerbs(HttpVerbs.Post)聲明
*更改我的類型的ActionResult,而不是無效的,因爲重定向需要在它前面

注回:我重定向我用「 ../「因爲這個觀點不在Home之下。

回答

1

你的問題很混亂,因爲你沒有提供太多的細節。很顯然,像onfocusonclick這樣的事件只能通過客戶端JavaScript來處理。你提到jQuery和POST,所以我想你正在談論AJAX。所以,你可以發送一個值是這樣的:

$.post('@Url.Action("Foo")', { value: $('#mytextboxid').val() }, function(result) { 
    // the value was successfully posted to the server 
}); 

,並在服務器上,你將有以下控制措施:

public ActionResult Foo(string value) 
{ 
    // TODO: do something with the value and return a corresponding result 
} 
1

假設輸入ID爲magCardCode,這樣你可以有一個Action這需要一個參數:string magCardCode

在這種情況下,你可以使用jQuery阿賈克斯這樣簡單地張貼您的形式:

<script> 
    $(document).ready(function() { 
     $("#submitForm").click(function() { 
      $.ajax({ 
       url: '/MagCard/SubmitCode/, 
       dataType: 'html', 
       type: 'POST', 
       success: function (data) { 
        // Use data 
      }); 
     }); 

    }); 
</script> 

而現在的價值是你的行動中accessable!