2016-06-13 21 views
2

我正在構建一個小型web應用程序來測試新的ASP.NET Core MVC。 我實現了一個View Component,它包含一個登錄表單,我需要將其插入整個應用程序的各個位置。我的表單當前將數據發佈到處理登錄的正常Controller。從視圖組件發佈表單

現在,假設用戶提供了錯誤的登錄信息,我想向模型狀態添加一條錯誤消息,並將其顯示在我的表單下,如正常驗證。但是,由於視圖組件可以被集成到各種場所,我怎樣才能找出表單帖子的來源?

我想渲染用戶用來再次輸入他的憑據的同一站點,但只有驗證錯誤。有沒有什麼方法可以找出表單帖子來自哪個視圖?或者更好的是有什麼標準的方式來處理形式作爲在ASP.NET核心MVC中的視圖組件?

回答

2

如果您從ViewComponent繼承,則可以訪問ViewContext屬性,該屬性包含有關路徑數據的所有信息,包括操作和控制器。然後,將IUrlHelperFactory注入ViewComponent(通過構造函數,然後作爲專用字段存儲),並通過從工廠獲取IUrlHelper(傳入ViewContext)並調用Action()方法來重新創建url。

public class LoginViewComponent : ViewComponent { 
    public LoginViewComponent(IUrlHelperFactory factory) { 
     this.factory = factory; 
    } 
    private IUrlHelperFactory factory; 

    public void Invoke() { 
     IUrlHelper helper = factory.GetUrlHelper(ViewContext); 
     helper.Action(); // returns url to the current controller action 
    } 
} 
+0

謝謝你的! IUrlHelperFactory是我無法找到的魔術。 – Peter