2014-07-02 90 views
-1

我是新來的MVC很抱歉,如果這聽起來很愚蠢:充分利用隱藏字段值到另一個頁面

我有一個觀點,與下面的代碼:

using (Html.BeginForm("Index", "testcontroller", FormMethod.Post)) 
    { 
     @Html.Hidden("customerReferenceNumber", "116999") 
     @Html.Hidden("customerName", "John Smith") 
     @Html.Hidden("mobileNumber", "12345") 
     <input type="submit" value="Mobile Lost or Stolen?" /> 
    } 

我另一種觀點叫testview2和一個叫控制器的TestController,有一個方法:

public string Index(int customerref,string customername,string mobilenumber) 
    { 


    } 

我要如何從html.hidden字段中的硬編碼值到其他頁面上的第一個視圖按鈕點擊後?

+0

那麼你的表單看起來並沒有發佈到TestController上的Index方法,所以我不確定你想要解決什麼問題。 –

+0

我已經改變了這一點,但我仍然沒有線索? – user3798474

+0

爲什麼索引'string'的返回類型而不是'ActionResult'? –

回答

0

actionPlease創建此相同的控制器第二個索引操作和[httppost]過濾器添加到它

using (Html.BeginForm("Index", "testcontroller", FormMethod.Post)) 
    { 
     @Html.Hidden("customerReferenceNumber", 116999) 
     @Html.Hidden("customerName", "John Smith") 
     @Html.Hidden("mobileNumber", "12345") 
     <input type="submit" value="Mobile Lost or Stolen?" /> 
    } 


[HttpPost] 
public string Index(int customerReferenceNumber,string customerName,string mobileNumber) 
    { 


    } 
+0

謝謝,我該如何將customerref分配給視圖中的相關隱藏字段? – user3798474

+0

請刪除客戶customerReferenceNumber引號如果你想通過它作爲int不是一個字符串 – sylwester

+0

和一切都好嗎? – sylwester

0

如果可能name your parameters correctly it seems to work fine,也就是說你需要輸入名字到方法的參數相匹配。

customerReferenceNumber」 不等於 「customerref

此外,由於您沒有通過customerref應該,因爲它需要一個int拋出一個異常,和MVC沒有想法什麼int通過。

查看:

@model HelloWorldMvcApp.ResultViewModel 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 
<!-- template from http://getbootstrap.com/getting-started --> 

<html lang="en"> 
    <body> 
    @using (Html.BeginForm()) 
    { 
     @Html.Hidden("customerReferenceNumber", "116999") 
     @Html.Hidden("customerName", "John Smith") 
     @Html.Hidden("mobileNumber", "12345") 
     <input type="submit" value="Mobile Lost or Stolen?" /> 
    } 

    @if (Model != null) 
    { 
     <p> 
     Results: <br /> 
      @Model.CustomerReferenceNumber<br /> 
      @Model.CustomerName<br /> 
      @Model.MobileNumber<br /> 
     </p> 
    } 

    </body> 
</html> 

控制器:

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult Index() 
    { 
     ResultViewModel model = null; 

     return View(model); 
    } 


    [HttpPost] 
    public ActionResult Index(int customerReferenceNumber, 
           string customerName, 
           string mobileNumber) 
    {    
     var model = new ResultViewModel(); 

     model.CustomerName = customerName; 
     model.CustomerReferenceNumber = customerReferenceNumber; 
     model.MobileNumber = mobileNumber; 

     return View(model); 
    } 

} 
0

爲了得到它另一頁上意味着另一個控制器說控制器2,「指數」的方法,你應該張貼以隱藏字段的另一個控制器動作綁定到模型。

@model HelloWorldMvcApp.ResultViewModel 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 


<html lang="en"> 
    <body> 
    @using (Html.BeginForm("Index","TestController2")) 
    { 
     @Html.HiddenFor(m=>m.CustomerReferenceNumber) 
     @Html.HiddenFor(m=>m.MobileNumber) 
     @Html.HiddenFor(m=>m.CustomerName) 
    } 
    </body> 
</html> 

在TestController2

[HttpPost] 
ActionResult Index(ResultViewModel model) 
{ 
    //you will get values in model 
} 
0

無論您使用的模型或更新您的控制器

public string Index(int customerReferenceNumber, string customerName, string mobileNumber) 
{ 

} 

記住參數名稱是一樣的你的隱藏字段的名稱。

0

名稱應該匹配。由此只有參數綁定發生。 而且,控制器操作始終返回ActionResult或從中派生的任何內容。你寫的方法被認爲只是一個普通的方法,而不是控制器的行爲

using (Html.BeginForm("Index", "testcontroller", FormMethod.Post)) 
{ 
    @Html.Hidden("customerReferenceNumber", "116999") 
    @Html.Hidden("customerName", "John Smith") 
    @Html.Hidden("mobileNumber", "12345") 
    <input type="submit" value="Mobile Lost or Stolen?" /> 
} 

這是okk。但控制器操作應定義爲

public ActionResult Index(string customerReferenceNumber,string customerName,string mobileNumber) 
{ 


} 

請注意名稱的更改以及參數列表中的數據類型。

相關問題