Как управлять несколькими кнопками отправки в моем случае в MVC 5? - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в MVC, я использую MVC 5

_Layout.cshtml код

_Layout.cshtml имеет панель навигации, она содержит Logout, кнопка More , если пользователь уже вошел в систему. Кроме того, он отобразит часть тела (Index.cshtml)

//Navbar
@if (ViewBag.name != null)
{
    <input type="submit" class="dropdown-item" formaction="Logout" value="Logout" id="btnLogout" />
}
else{
    <a class="nav-link" href="#">Login & Signup</a>
}
<input type="submit" class="dropdown-item" formaction="More" value="More" id="btnMore" />
//body
<div class="container body-content">
    @RenderBody()    //Index.cshtml
</div>

Index.cshtml

Index.cshtml имеет несколько ссылок, а также несколько кнопок и ссылок привязки, а вызывает частичное представление (_Login)

@using TestProject.Models
@model ViewSignInAndSignUp 

//some html code
<input type="submit" class="dropdown-item" formaction="Action1" value="Action1" id="btnAction1" />
<input type="submit" class="dropdown-item" formaction="Action2" value="Action1" id="btnAction2" />

@Html.Partial("_Login")   //partialview

_Login.cshtml

_Login.cshtml это одно частичное представление, если пользователь посещает какие-либо ссылки, это частичное представление появится, чтобы попросить пользователя выполнить вход.Это частичное представление кнопок

@model TestProject.Models.SignIn
@using (Html.BeginForm("ControllerSignIn", "Home"))
{
    @Html.TextBoxFor(si => si.userName, new { @class = "form-control", @id = "txtLogin" })
    @Html.TextBoxFor(si => si.password, new { @class = "form-control", @id = "txtPassword", @type = "password" })
    <input type="submit" class="btn btn-sm btn-primary btn-rounded" value="Login" id="btnLoginSubmit" />
}

HomeController

[HttpPost]
public ActionResult Logout(string submitButton)
{
    // some coding
    return RedirectToAction("Index", "Home");
}
[HttpPost]
public ActionResult More(string str1)
{
    // some coding
    return RedirectToAction("Index", "Home");
}

[HttpPost]
public ActionResult Action1(string str1)
{
    // some coding
    return RedirectToAction("Index", "Home");
}

[HttpPost]
public ActionResult Action2(string str1)
{
    // some coding
    return RedirectToAction("Index", "Home");
}

Теперь, как я могу управлять всеми кнопками с _Layout.cshtml, Index.cshtml, _Login.cshtml(Partial view)

Примечание

моя кнопка входа в систему работает, но кнопки выхода, больше, action1, action2 не работают

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Кнопка отправки отправляет форму, используя URL-адрес действия, определенный в теге <form>. Если вы хотите использовать несколько кнопок отправки, вам нужно обернуть их внутри нескольких форм с различными значениями атрибута action.

Однако нет необходимости использовать несколько кнопок отправки для этих методов действия, поскольку избыточные теги <form> неэффективны.Вы можете просто использовать @Html.ActionLink() помощник, чтобы вызывать их так (а затем использовать стили для этих ссылок, чтобы они выглядели как кнопки):

@Html.ActionLink("Logout", "Logout", "Home", null, new { @class = "dropdown-item", @id = "btnLogout" })

Если действие содержит параметр (ы), вы должны добавить routeValues как пример ниже:

@Html.ActionLink("Action1", "Action1", "Home", new { str1 = "SomeValue" }, new { @class = "dropdown-item", @id = "btnAction1" })

И измените метод HTTP на GET, потому что ActionLink помощник генерирует якорный тег <a> с атрибутом href, который должен использовать GET method:

[HttpGet]
public ActionResult Logout()
{
    // some coding
    return RedirectToAction("Index", "Home");
}

То же обращение должно применяться и к More, Action1 и Action2 методам действия.

Дополнительная ссылка:

Помощник ActionLink

0 голосов
/ 20 февраля 2019

Замените это

<input type="submit" class="dropdown-item" formaction="Logout" value="Logout" id="btnLogout" />

этим

<a href="Account/logout">Logout</a>

Замените href конечной точкой выхода из системы для вашего приложения, если она отличается от указанной выше.Удалите любую форму, указывающую на конечную точку выхода из системы, так как она больше не нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...