asp.net MVC форма POST работает в Localhost, но не работает после публикации
HomeController.cs:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(LoginInfo login)
{
if (Request.Form["Submit"] != null)
{
string Username = login.Username;
string Password = login.Password;
ViewBag.Massage = "";
if (Username == "Admin" && Password == "123")
{
ViewBag.Massage = "Login Successfull";
return RedirectToAction("MSISDN","UnSub");
}
else
{
ViewBag.Massage = "Please Enter Valid Login Information";
}
}
return View();
}
Views / Home / Index.cshtml
<form name="myForm" action="/Home/Index" method="post">
<div align="center">
<div style="color:red">@ViewBag.Massage</div>
<br>
<label for="Username">Username:</label>
<input type="text" name="Username" id="Username">
<label for="Password">Password:</label>
<input type="password" name="Password" id="Password">
<br>
<input type="submit" name="Submit"value="Submit">
</div>
</form>
Этот код прекрасно работает на моем локальном хосте. Но когда я публикую свой проект на IIS Server, он не работает. Возвращается
Ошибка сервера: 404 файл или каталог не найден.
Может быть, это противоречит моему физическому пути и запрошенному пути. Как решить эту проблему??:(
2 ответа
Решение
Мой код работает правильно после использования tilde (~)
подписать перед действием. Например:
действие ="~/Home/Index"
После использования этого знака мой код работает правильно. Это уменьшает конфликты между виртуальным путем и физическим путем.
action
URL в form
тег может быть неправильным:
- Если URL для отображения и публикации данных совпадает, вы можете удалить
action="/Home/Index"
- Если вы хотите указать URL, пожалуйста, используйте
action="@Url.Action("Index")"
- Это автоматически разрешит URL.