私は学習プロジェクトとしてASP.NET MVCでTinyURLクローンを作成しようとしています。なぜこのフォームはASP.NET MVCでコントローラアクションを呼び出さないのですか?
今、私が望むのは、フォームを介して/ Home/Createアクションに新しいURLを送信できることだけです。
は、私は私のルーティングを設定している、私のLINQ式すべてのセットアップを持っている、と私は私のビューを設定しているが、何かが私の設定が間違っています。
ルーティング:
routes.MapRoute(
"Default", // Route name
"", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Redirect",
"{hash}",
new { controller = "Home", action = "RequestLink", hash = "" }
);
これらのルートは、私は私のウェブサイト、www.tinyurlclone.com/に行くことができるようにと何も渡されない場合、TIは単に私のホーム/インデックス()アクションに行くことができます。ただし、スラッシュの後に何かを置くと、Link Hashとみなされ、ハッシュを取得しようとします。
次のように私にHomeControllerがある:
[HandleError]
public class HomeController : Controller
{
TinyGetRepository repo = new TinyGetRepository();
public ActionResult Index()
{
return View();
}
public ActionResult Create(String url)
{
String hash = repo.addLink(url);
ViewData["LinkHash"] = hash;
return View();
}
public ActionResult RequestLink(String hash)
{
String url = repo.getLink(hash);
return Redirect(url);
}
}
私のレポクラスは、データベースを扱うためにそれにすべての私のLINQ式を持ち、それはこれに関連していないので、私は実際にそれらを含める必要はありません質問。
最後に、(URLを送信するために使用)私の基本的なホーム/インデックス()ビューは次のとおりです。私は提出クリックしたときしかし、私のフォームは、単に任意のメソッドを発射されていない
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Index</title>
</head>
<body>
<div>
<center>
<span style="font-size: 14pt">TinyGet <em>(beta)</em></span><br />
<span style="font-family: Tahoma">Reduce your long links to smaller ones to keep them more memorable....<br />
</span>
<% using(Html.BeginForm("Create", "Home")) %>
<% { %>
<%= Html.TextBox("url") %>
<input type="submit" name="submitButton" value="Shorten Link!" />
<% } %>
</center>
</div>
</body>
</html>
。私は生成されたHTMLのソースを表示する場合
さらに、私はそれが正しく私のフォームのアクションしなかったことを見ることができ、それは読む:
<form action="" method="post"><input id="url" name="url" type="text" value="" />
<input type="submit" name="submitButton" value="Shorten Link!" />
</form>
はなぜアクションとして「」入れてHTMLヘルパーですそれは〜を置くべきであるとき/ホーム/作成?私の/ Home/Createアクションメソッドが呼び出されないのはなぜですか?私がHtmlヘルパーを使用せずに手動で<form
>タグを指定しても、エラーが発生します。
ここで何が間違っていますか?プロジェクトの
出典:here
しかし、www.mysite.com/hashgoeshereと入力できるようにするにはどうすればよいですか。 – Mithrax
、つまりwww.mysite.com/fghas82 – Mithrax
でも動作します – dswatik