簡體   English   中英

為什么嘗試 POST 時我的模型屬性為空?

[英]Why are my model properties null when trying to POST?

所以我正在嘗試創建一個登錄頁面,並且我創建了一個表單,該表單發布到控制器內的操作。

這就是控制器的樣子,非常簡單,僅用於測試目的。

public ActionResult Verify(User account)
{
    var s = account;
    if (db.Users.Any(o => o.Username == ""))
    {
        // Match!
    }
    return Redirect("https://google.se");
}

這是 HTML

<form id="form1" method="post" action="Verify">
    <!-- Input and Submit elements -->
    <div class="form-group">
        <input type="email" class="form-control form-control-user" id="Username" name="Username" aria-describedby="emailHelp" placeholder="Enter Email Address...">
    </div>
    <div class="form-group">
        <input type="password" class="form-control form-control-user" name="PasswordHash" placeholder="Password">
    </div>
    <a href="Verify" type="submit" class="btn btn-primary btn-user btn-block" >
        Login
    </a>
    <hr>
</form>

當我單擊Login它確實調用了Verify操作,但是我在account傳遞的參數所有屬性都為空,我不知道為什么。

您並沒有真正提交表單,除非某些 javascript 事件為您執行此操作。

嘗試改變

<a href="Verify" type="submit" class="btn btn-primary btn-user btn-block" >
    Login
</a>

改為提交按鈕

<button type="submit" class="btn btn-primary btn-user btn-block" >
     Login
</button>

當您使用鏈接時,您正在發出一個 GET 請求,該請求不會將您的表單數據發布到控制器,在 chrome 中,您可以在開發人員工具/網絡中看到自己,打開它,然后單擊登錄,這應該會導致驗證請求出現在請求列表中。

如果您真的想使用鏈接而不是提交按鈕,那么您可以添加一些 javascript 來提交表單,方法是添加事件處理程序或直接從鏈接的 onClick 方法提交表單。

<a href="Verify" onclick="document.getElementById('form1').submit();" class="btn btn-primary btn-user btn-block" >
    Login
</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM