2016-11-10 72 views
2

我已經構建了一個MVC 5應用程序,它可以動態地從DLL中加載子應用程序。一切都按預期工作,但在某個地方,我注意到儘管使用了Post,但我的模型開始出現在查詢字符串中。模型出現在查詢字符串中的MVC問題

他們出現這樣的:

http://localhost:64921/Access/LookupUser?PageModel=AccessChecker.App.Models.UserLookup

雖然我希望他們能夠出現這樣的:

http://localhost:64921/Access/LookupUser

不幸THI我們不得不爲另一個項目擱置一段時間,而我只是回到它。我知道,在我放棄之前,我試圖重建一大部分應用程序試圖解決這個問題,並沒有發現它的原因。

因爲我的路線是動態生成的,我不能顯示的代碼片段,但這裏有路由URL值(爲了在運行時):

「__browserLink /的RequestData/{的requestId}」

「」

「API/{控制器} /(編號)」

「{}資源個.axd/{*} PATHINFO」

「{控制器}/{行動} /(編號)」

「CAS/{控制器}/{行動} /(編號)」

「App1的/ {控制器}/{行動}/{ID } 「

」App2的/ {控制器}/{行動} /(編號)「

」App3的/ {控制器}/{行動} /(編號)「

」 訪問/ {控制器}/{action}/{id}「

我的控制器動作看起來是這樣的:

public ActionResult LookupUser(UserLookup LookupModel, FormCollection FormData) 
    { 
     UserLookup UL = null; 
     ... 
     return View(UL); 
    } 

在視圖形式如下:

@using (Html.BeginForm("LookupUser", Application.ApplicationPrefix, new { PageModel = Model }, FormMethod.Post, new { id = "LookupArea", @class = (Model.Memberships.Count > 0 ? "LoadedWithContent" : ""), role = "form" })) 
{ 
    ... 
      <input type="submit" id="Submit_btn" value="Lookup" /> 
    ... 
} 

在其他許多嘗試之上,我曾嘗試採取了默認的路由,移動「{控制器}/{動作}/{id}「到最後,取出無關的路線,刪除」,FormCollection FormData「以及很多我早已忘記的事情。 Global.asax.cs中的Application_BeginRequest中的URL具有模型。

我也重寫或擴展了MVC框架的重要部分,以支持DLL中的動態內容,安全檢查或錯誤重定向,因此它可能與某些部分有關,或者可能像表單一樣簡單參數或路線順序(即使我試圖檢查)。

任何有關如何縮小範圍的指導或關於可能導致這種情況的見解,我們將不勝感激。

+0

如果這些是Get操作,則這是默認行爲,因爲get不支持使用Post或Put操作等參數發送主體。 –

+0

意圖是在接收數據時它是一個Post(FormCollection用於替代調用方法)。如果我設置了HttpPost屬性,我需要有兩個不同的操作(一個用於空白表單,一個用於Get和Post用於空白表單)。 – Paul77M

+0

只是爲了確定,我將代碼拆分爲兩個操作,並在帖子中出現相同的問題。 – Paul77M

回答

0

斯蒂芬上面的建議糾正了我的問題(主要是通過森林看到樹木)。