2017-09-29 11 views
0

私は、ページの下部にある連絡先フォームを持っており、スクロールする必要があります。フォームが送信されると、ページがリロードされ、ページがアンカーになるために、連絡先フォームに移動する必要があります。 BeginFormのアクションを変更すると、アンカー内の '#'が '%23'にエンコードされます。このフォームの実行を停止するにはどうすればよいですか?MVC Razor - アンカーアクションを使用したBeginForm

JavaScriptを使用せずにこの機能が必要です。

<form action="/en/Home/Contact?ReturnURL=%23contact" method="post" novalidate="novalidate"> 

次のHTMLは、(私はカミソリでそれを生成する方法がわからない)だろうが:上記のコードは次のHTMLを返し、アンカーに行くことはありません

@{ 
    using (Html.BeginForm(null, null, new { ReturnURL = "#contact" }, FormMethod.Post, new { novalidate = "novalidate" })) 
    { 
     //Fields... 

     <button type="submit">Submit</button> 
    } 
} 

:私はまた、次のことを試してみたが、 '#' が常にエンコードされ

<form action="/en/Home/Contact?ReturnURL=#contact" method="post" novalidate="novalidate"> 

using (Html.BeginForm(null, null, new { ReturnURL = HttpUtility.HtmlDecode("#contact") }, FormMethod.Post, new { novalidate = "novalidate" })) 

using (Html.BeginForm(null, null, new { ReturnURL = HttpUtility.UrlDecode("#contact") }, FormMethod.Post, new { novalidate = "novalidate" })) 

using (Html.BeginForm(new { action = Url.Action("Index", "Home") + Html.Raw("Contact/#contact") })) 
+0

https://stackoverflow.com/questions/274586/including-an-anchor-tag-in:インデックス/ホーム/フロントページに、私はルートを構築するために、以下の使用してきましたされていません-an-asp-net-mvc-html-actionlink tこれ – Danimal

答えて

0

「アクション」キーワードを使用すると、フォームのアクションを上書きするようです - 以下のコードは、溶液されています、ユーザーがフォームのサイトではsite.com/#contact

に提出オン

using (Html.BeginForm(null, null, FormMethod.Post, new { action = "#contact" })) 

送信されます。

using (Html.BeginForm(null, null, FormMethod.Post, 
    new { action = string.Format("{0}/{1}#contact", 
     ViewContext.RouteData.Values["controller"], 
     ViewContext.RouteData.Values["action"]) 
    })) 
関連する問題