2013-05-17 180 views
1

將視圖分配爲按鈕時,將視圖傳遞給控制器​​時存在一個問題。如果我在我看來,使用此代碼:MVC 3 - 將兩個參數從視圖傳遞到控制器

@using (Html.BeginForm("Edit", "Shift", new { lineName = item.Line, dateTime=item.Date })) 
     {      
     <input type="submit" value="Edit"/> 
     } 

我得到這個字符串作爲結果,因爲符號被替換&

<form action="/Shift/Edit?lineName=Line%203&amp;dateTime=04%2F01%2F2004%2007%3A00%3A00" method="post">   <input type="submit" value="Edit"/> 
</form> 

不工作所以來解決,我發現我可以使用在Html.Raw

  @using (Html.Raw(Url.Action("Edit", "Shift", new { lineName = item.Line, dateTime=item.Date }))) 
     {      
     <input type="submit" value="Edit"/> 
     } 

但是,這給我的錯誤:

「System.W eb.IHtmlString「:在使用語句中使用的類型必須是隱式轉換爲‘System.IDisposable的’

我的控制器metdhods:(編輯)

//Displays Edit screen for selected Shift 
    public ViewResult Edit(string lineName, DateTime dateTime) 
    { 
     Shift shift = repository.Shifts.FirstOrDefault(s => s.Line == lineName & s.Date == dateTime); 
     return View(shift); 
    } 

    //Save changes to the Shift 
    [HttpPost] 
    public ActionResult Edit(Shift shift) 
    { 
     // try to save data to database 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       repository.SaveShift(shift); 
       TempData["message"] = string.Format("{0} has been saved", shift.Date); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       //return to shift view if there is something wrong with the data 
       return View(shift); 
      } 

     } 
     //Catchs conccurency exception and displays collision values next to the textboxes 
     catch (DbUpdateConcurrencyException ex) 
     { 
      return View(shift); 
     } 
    } 

可否請你支持我這個,我現在花幾天時間在這一個上。

謝謝

回答

2

根據我對你的代碼的瞭解,我建議你以下解決方案:

在View:

@using (Html.BeginForm("Edit", "Shift", FormMethod.Post, new { enctype = "multipart/form-data"})) 
{ 
       <input type="hidden" name="lineName" value="@item.Line"/>  
       <input type="hidden" name="dateTime" value="@item.Date"/> 
       <input type="submit" value="Edit"/> 
     } 

在控制器: -

 [HttpPost] 
public ActionResult Edit(datatype lineName , datatype dateTime) 
{ 
} 

請糾正我,如果我錯了。

+0

不幸的是仍然無法正常工作。 @using帶下劃線,我得到相同的錯誤 – Whistler

+0

而我的控制器看起來與您寫的完全一樣。 – Whistler

+0

我已經更新了代碼,請嘗試這個。仍然有任何錯誤,請讓我知道。 –

0

在控制器方法中添加參數例如:

View :- 
@using (Html.BeginForm("Edit", "Shift", new { lineName = item.Line, dateTime=item.Date })) 
{      
    <input type="submit" value="Edit"/> 
} 

Controller :- 
public ActionResult yourMethod(datatype lineName , datatype dateTime) 
+0

我有兩個名字相同但參數個數不同的方法,當我執行代碼時,它將我指向一個參數的方法。 – Whistler

相關問題