2012-01-17 70 views
0

我有一個部分視圖,它上面有一個創建按鈕,但是一旦按下它就永遠不會到達控制器。當按下它進入指數Ie /回扣從/回扣/編輯/ 1MVC3 Razor部分視圖不會發送回控制器

@model RMS.Models.RebateLine 



@using (Html.BeginForm("Create","RebateLine",FormMethod.Post)) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>RebateLine</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.RebateID) 
    </div> 
    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 
} 

編輯:添加控制器邏輯

public class RebateLineController : BaseController 
{ 
    public ActionResult Create() 
    { 
     return View(); 
    } 

    // 
    // POST: /RebateLine/Create 

    [HttpPost] 
    public ActionResult Create(RebateLine rebateline) 
    { 
     if (ModelState.IsValid) 
     { 
      UnitOfWork.RebateLineRepository.Insert(rebateline); 
      UnitOfWork.Save(); 

      return RedirectToAction("Index"); 
     } 

     return View(rebateline); 
    } 
... 
    } 

附加編輯:/回扣是顯示什麼我點擊創建後及以下是對被調用的部分的調用。

@{ Html.RenderPartial("_RebateLines",Model.RebateLines.FirstOrDefault()); } 

最後編輯: 我重新設計了這個如此的諧音是不需要做任何事情,但顯示器,但如果有人想出了一個答案,我會嘗試回去在稍後的日期,並修復它。

+0

你能爲你的RebateLineController :: Create動作添加代碼嗎? – santiagoIT 2012-01-17 03:13:55

+0

當然可以,雖然如上所述,永遠不會得到它,我敢肯定這是如何部分聲明或如何內部的HTML表單是。 – CouncilScribe 2012-01-17 03:20:17

+0

提交表單後顯示的確切網址是什麼? – santiagoIT 2012-01-17 03:48:20

回答

0

因爲你所有的代碼看起來不錯。我會看看Glimpse這可能會幫助你追蹤問題。

1

看來你的控制器被命名爲RebateController。 如果是這樣的話,那麼改變:

@using (Html.BeginForm("Create","RebateLine",FormMethod.Post)) { 

@using (Html.BeginForm("Create","Rebate",FormMethod.Post)) { 

編輯

創建DebugController,添加一個名爲一個動作:測試1。 爲它創建相應的視圖。不要使用任何佈局頁面。

就在這個標記添加到正文部分:

<div> 
@{Html.RenderPartial("_RebateLines",new Model.RebateLines());} 
</div> 

以調試模式運行該項目,並參觀/調試/ test1的URL。 在您的RebatteLines :: Create操作中放置一個斷點。 點擊提交按鈕。 必須點擊斷點。 如果它被命中,這意味着在你打電話給Html.RenderPartial的頁面中有某些東西阻止表單提交到期望的URL,可能是一些JavaScript。甚至可能在你的佈局。 確認我上面提到的測試是否按預期運行。

+0

我有兩個單獨的控制器,一個叫回扣,一個叫回扣線。 – CouncilScribe 2012-01-17 03:06:54

+0

你的代碼沒有錯。它真的應該工作。你有沒有嘗試在Create動作中設置斷點?你是否100%肯定它沒有被調用? – santiagoIT 2012-01-17 03:40:55

+0

向我們展示您渲染局部視圖的代碼?你確定你正在渲染正確的嗎? – santiagoIT 2012-01-17 03:57:16

0

您正在使用名爲「RebateLineController」和ActionResult「Create」的控制器。但是您提到的網址爲「/ Rebate/Edit/1」。網址是否正確?

從你的代碼:

if (ModelState.IsValid) 
    { 
     UnitOfWork.RebateLineRepository.Insert(rebateline); 
     UnitOfWork.Save(); 

     return RedirectToAction("Index"); 
    } 

很顯然,如果ModelState中是有效的,頁面會被重定向到「索引」你已經給:

return RedirectToAction("Index"); 

我是正確?這是我可以從你的代碼中假設的。

Regards .. 蘇尼爾

+0

頁面上的部分視圖deaqls與回扣行的網址,如果罰款。 – CouncilScribe 2012-01-17 04:48:56

-1

嘗試使用

@Html.RenderAction("Create", "RebateLines", new { id = Model.RebateLines.FirstOrDefault().RebateID }) 

,改變你的控制器如下:

public class RebateLineController : BaseController 
{ 
    public ActionResult Create(int id) 
    { 
     return View(); 
    } 

// 
// POST: /RebateLine/Create 

[HttpPost] 
public ActionResult Create(int id,RebateLine rebateline) 
{ 
    if (ModelState.IsValid) 
    { 
     UnitOfWork.RebateLineRepository.Insert(rebateline); 
     UnitOfWork.Save(); 

     return RedirectToAction("Index"); 
    } 

    return View(rebateline); 
} 
... 
} 

希望它可以幫助..

標記爲答案,如果有用的。