2015-05-19 89 views
5

我打我認爲是一個非常愚蠢的問題,我明顯缺少一些簡單的東西。asp.net mvc表單不發佈參數值

我做了一個簡單的asp.net mvc網站(.net 4.5),並將索引更改爲一個簡單的表單,我只想將其發佈回自己並吐出變量。
這裏是我的形式

@using(Html.BeginForm()) 
{ 
    <input type="text" class="form-control" id="empId" placeholder="Enter EmployeeId (ex. 999999)"> 
    <input type="text" class="form-control" id="account" placeholder="Enter account)"> 
    <input type="email" class="form-control" id="email" placeholder="Enter email"> 
    <input type="submit" class="btn btn-default" value="Submit" /> 
} 

,這裏是我的崗位方法

[HttpPost] 
public ActionResult Index(string empId, string account, string email) 
{ 
    return Content(Request["empId"]); 
} 

我得不到任何回報。當頁的帖子。同樣在調試器中,我可以看到該方法被擊中,但所有參數都是空的,即使我填寫了表單。

我錯過了一些明顯的東西嗎?

+1

添加名稱除了id:name =「empId」,name =「account」,name =「email」,...並且在測試之後,請考慮使用模型綁定和模型,它更加乾淨/智能:-) – clement

+0

謝謝!這解決了我的問題。我只是要放棄編程的一天 – user257655

+0

酷,我做了一個完整的答案,請考慮驗證它,如果沒關係 – clement

回答

10

你剛纔忘了名字屬性:

@using(Html.BeginForm()) 
{ 
    <input type="text" class="form-control" name="empId" id="empId" placeholder="Enter EmployeeId (ex. 999999)"> 
    <input type="text" class="form-control" name="account" id="account" placeholder="Enter account)"> 
    <input type="email" class="form-control" name="email" id="email" placeholder="Enter email"> 
    <input type="submit" class="btn btn-default" value="Submit" /> 
} 

我總是推薦使用一些字符串或整型模型綁定instrad。如果使用得好,就會使模型結合工作毫不費力:

型號:

public class ExampleModel 
{ 
public intempId { get; set; } 
public string account{ get; set; } 
public string email{ get; set; } 
} 

在剃刀頁:

@using(Html.BeginForm()) 
    { 
     @Html.EditorFor((m => m.intempId, new { @class = "form-control" })) 
     @Html.EditorFor((m => m.account, new { @class = "form-control" })) 
     @Html.EditorFor((m => m.email, new { @class = "form-control" })) 
    } 

,然後在控制器:

[HttpPost] 
public ActionResult Index(ExampleModel model) 
{ 
    return Content(model.empId); 
} 

使用該模型,您還可以直接在模型上添加驗證等,然後ASP.NET MVC可以將驗證兩個前端與jQuery驗證和後端(如果(ModelState.IsValid))。使用模型有很多好處!

+0

感謝您提供OP以正確的方式在MVC中處理這些事情:) –

+0

當您啓動新技術時,總是會歡迎一點幫助:-) – clement