0
HTTPPostアクションを使用して別のコントローラにリンクしようとしていますが、現在のページのコントローラにルート値を追加しようとしました。たとえば、Site/ViewIndex
からPage/createPage
にフォームとHTTPPOST
をリンクしようとすると、404がスローされ、Site/Page/createPage
にアクセスできないと表示されます。なぜこれをやっているのですか?それをどうやって止めることができますか?ここでアクションルーティングが同じコントローラに移動する
は、私のサイト/のcreatePageです:
<form method="post" action="Page/createPage">
<input class="form-field form-control" type="text" name="title" placeholder="Page Title" />
<input class="form-field form-control" type="text" name="description" placeholder="Page Description" />
<input class="form-field form-control" type="hidden" name="siteId" value="@site.Id" />
Blog page? <input class="form-field" type="checkbox" value="true" name="isBlog" /><br /><br />
<input class="btn btn-info" type="submit" value="Create" />
</form>
そして、私はそれがどんな関連性だが、ここに私のサイトコントローラは疑う:ここ
public ActionResult createPage(int siteId, string title, string description, bool isBlog = false)
{
if (string.IsNullOrWhiteSpace(title) ||
string.IsNullOrWhiteSpace(description))
{
return RedirectToAction("ViewIndex", new { siteId = siteId, message = "Please fill out all fields" });
}
try
{
Ops.PageOps.createPage(title, description, siteId, isBlog);
return RedirectToAction("ViewIndex", "Site", new { siteId = siteId, message = "Page created!" });
}
catch (Exception e)
{
return RedirectToAction("ViewIndex", new { siteId = siteId, message = "Error occured: " + e.Message });
}
}
は私のフォームです
public class SiteController : Controller
{
/// <summary>
/// The create page
/// </summary>
/// <returns></returns>
public ActionResult CreateIndex()
{
return View();
}
[HttpPost]
public ActionResult Create(string title, string description, bool privateSite = false)
{
Ops.SiteOps.createSite(Authenticated.AuthenticatedAs, title, description, privateSite);
return RedirectToAction("Index", "Home");
}
public ActionResult ViewIndex(int siteId, string message = null)
{
ViewBag.message = message;
ViewBag.siteId = siteId;
return View();
}
}
どのようにリンクしていますか?コードを表示できますか? – Shyju
@Shyju更新された質問をご覧ください – RhysO