2012-12-29 147 views
2

登錄信息,我不知道我做什麼,但現在我的網站顯示此作爲URL:Asp.net成員資格提供顯示URL

http://localhost:53187/Customer/AccountScreen?UserName=testx&Password=test12345&RememberMe=False&AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4 

我打電話了客戶的帳戶屏幕是這樣的:

return RedirectToAction("AccountScreen", "Customer", model); 

所以,我不明白爲什麼它現在顯示在網址中。這對我來說確實是一個不好的習慣。

是否有辦法防止這種情況?

回答

2

這不是清楚爲什麼要將模型傳遞給RedirectToAction方法。第三個參數是routeValues。

無論你傳遞給routeValues參數將在URL中暴露其屬性。只要刪除第三個參數就可以了。如果你需要任何東西傳遞給AccountScreen使用類似

return RedirectToAction("AccountScreen", "Customer", new { id = model.Id }); 
+0

不需要模型,它是一箇舊的方法,我沒有更新,所以我刪除了需要和它現在工作正常。 Ty爲解釋。 – ErocM

1

RedirectToAction方法返回一個HTTP 302響應給瀏覽器,這會導致瀏覽器發出GET請求到指定的動作。所以,你看到的是一個以模型作爲路由值的獲取請求。 HTTP不支持使用POST重定向,所以你不能改變它。

你能做什麼 - 呼叫從自己的控制器的方法,而無需返回到瀏覽器(如果這是一個相同的控制器):

return AccountScreen(model); 

您可以使用TempData來存儲你的模型(這也將是GET請求,但模型不會傳入路由值 - 它將存儲在會話中)。在你的控制器:

TempData["model"] = model; 
return RedirectToAction("AccountScreen", "Customer"); 

客戶控制器:

public ActionResult AccountScreen() 
{ 
    YourModel model = TempData["model"] as YourModel; 
    //... 
} 
+0

它不是在同一個控制器內的在我腦海中的實例客戶控制器,並調用其AccountScreen方法:( – ErocM

+0

那麼首先的解決方案。這就是畜生,但應該作品。 –

2

你可以只包含值,您感興趣的是:

return RedirectToAction(
    "AccountScreen", 
    "Customer", 
    new { AccountId = mode.AccountId } 
); 

會重定向到http://localhost:53187/Customer/AccountScreen?AccountId=5b89d595-ef19-4feb-b95d-bf39672c9ac4

+0

我不知道我理解這個答案。我沒有通過登錄信息,它不是在模型中,它是由成員提供辦理。 – ErocM

+0

成員提供商沒有做任何重定向。做什麼性質你有'模型',你傳遞給RedirectToAction方法嗎?對不起,我可能誤解了你的問題。 –