UPDATE :
나는 파일 컨트롤러에 게시 할 방법 ... 또한, 나는 응용 프로그램을 통해 약간의 영향을, 그래서 가장 좋은 내 양식 또는 부분보기에서 처리 할 것 :
HomeController.cs :
01,235,164 여기
부분보기/하위 동작을 포함하는 또 다른 예이다
using System.Web.Mvc;
public class HomeController : Controller
{
[Route("~/")]
public ActionResult Index()
{
return View();
}
[Route("ModalContent")]
[ChildActionOnly]
public ActionResult ModalContent()
{
return View();
}
}
FilesController.cs : 홈 \ ModalContent.cshtml \
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Show modal
</button>
<div class="modal fade" id="myModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
@Html.Action("ModalContent")
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
조회수 : 홈 \ Index.cshtml \
using System.Web.Mvc;
[RoutePrefix("sth/api/v1/files")]
public class FilesController : Controller
{
[HttpPost]
[Route("getcloudcontent")]
public ActionResult CloudContent(string model)
{
return Content("test");
}
}
조회수
@using (Html.BeginForm("CloudContent", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div id="container"></div>
<input type="submit" name="PostMe" title="Submit" value="Submit Form" />
}
Global.asax.cs :
using System.Web.Mvc;
using System.Web.Routing;
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.MapMvcAttributeRoutes();
}
}
그리고 결과 HTML :
그 코드에 이상이 다른 무언가가있다
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Show modal
</button>
<div class="modal fade" id="myModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form action="/sth/api/v1/files/getcloudcontent" enctype="multipart/form-data" method="post">
<div id="container"></div>
<input type="submit" name="PostMe" title="Submit" value="Submit Form" />
</form>
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
. 나는 당신의 코드를 돌렸고 아무런 문제없이 일했다.
FilesController.cs :
using System.Web.Mvc;
namespace Controllers
{
[RoutePrefix("sth/api/v1/files")]
public class FilesController : Controller
{
[Route("")]
public ActionResult Index()
{
return View();
}
[HttpPost]
[Route("getcloudcontent")]
public ActionResult CloudContent(string model)
{
return Content("test");
}
}
}
Index.cshtml :
@using (Html.BeginForm("CloudContent", "Files", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div id="container"></div>
<input type="submit" name="PostMe" title="Submit" value="Submit Form" />
}
을 Global.asax 여기
코드이다.CS :
using System.Web.Mvc;
using System.Web.Routing;
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.MapMvcAttributeRoutes();
}
}
나는 다음과 같은 HTML 참조 http://localhost/sth/api/v1/files에 갈 때 :
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<form action="/sth/api/v1/files/getcloudcontent" enctype="multipart/form-data" method="post"> <div id="container"></div>
<input type="submit" name="PostMe" title="Submit" value="Submit Form" />
</form>
</body>
</html>
주의 조치가 접두사를 포함 올바른 URL이 형성.
대신 html 도우미를 사용하면 html을 직접 작성할 수 있습니다. 도우미는 그것이 정확히 무엇인지 원한다면 훌륭하지만, 그들이하는 일에서 전혀 벗어나면 고통 스러울 수 있습니다. 또 다른 옵션은 맞춤 헬퍼를 작성하는 것입니다. 이것이 1 오프라면 그것은 가치가 없습니다. – nurdyguy
다른 옵션으로는 RouteConfig.cs (ick)에 고유 한 라우트를 작성하거나 파일 컨트롤러의 메소드에 라우트 속성을 추가하는 것이 있습니다. 그래도 접근 할 수 없다면 양식 경로를 명시 적으로 작성하는 것이 최선책입니다. – nurdyguy
@nurdyguy - 파일 컨트롤러의 메소드에 경로 속성을 추가 할 수 있습니다. 실제로 [[Route ("getcloudcontent")]'가 있지만 접두어는 여전히 중요하다고 생각합니까? – Bartosz