0

私は .Net とすべての Web 開発の初心者です:s と の使用html.BeginFormに問題がありhtml.ActionLinkます。私はこれをhomeWeb.cshtmlで取得しました:

@using (Html.BeginForm("resultWeb", "Result", new { val = 1 }, FormMethod.Post ))    
{ 
    <div class="main-block">
            <input style="width:100%;" type="text" name="searchValue" /><br />
            <div style="text-align: center;">
                <input type="submit" value="Submit" />
            </div>  
    </div>
}

結果コントローラーを呼び出し、パラメーターとして val = 1 を送信する resultWeb ビューは、ここで私の ResultController.cs です。

[HttpPost]
        public ActionResult resultWeb(int val, FormCollection collection)
        {
            List<WebSite> list = new List<WebSite>();
            // Doing stuff with my list and the val
            return View(list);
        }

この部分は機能しており、パラメーターをビューに送信しています。html.ActionLink問題は、他のページで同じことをしようとしたときです

結果 Web.cshtml:

<tr>
    @for (int i = 0; i <= Model.Count / 15; i++)
    {   
        int j = i + 1;
        <td>@Html.ActionLink(@j.ToString(), "resultWeb", new { val = j })</td>
    }
</tr>

そして、リンクの1つをクリックしても機能しません。次のエラーが発生しました。

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.  
Requested URL: /Result/resultWeb/1

私は何か間違ったことをしていると思いますが、何がわかりません。誰かがこれについて私を助けることができますか?

ありがとう !

4

2 に答える 2

0

アクションリンクは、フォーム/データをコントローラーに投稿できません。<a>タグを作成するだけです。アクションリンクを含むフォームを送信する場合は、@Ajax.ActionLinkヘルパーを使用するか、jquery を使用してフォームをすべて一緒に投稿できます。

また、この質問は、ここここのように、stackoverflow で以前に何度も尋ねられました。

于 2013-07-06T23:09:23.013 に答える
-1

何千もの回答は正しいです。ActionLinks を介してデータを投稿することはできません。大きすぎない場合FormsCollectionは、クエリ文字列を使用できます。

これは私がやったことです

コントローラ:

 public ActionResult Index(string loc, string ma, string mo, int co = 0, int mi = 0)
        {
         search c = new search() { loc = loc, ma = ma, co = co, mo = mo, mi = mi }
         /*replace search() and query string variables with your FormsCollection*/
         /*Do thing here*/
         return View(DisplayModel)
        }

マイモデル

public class DisplayModel
    {
        public search Search { get; set; }
        public List<Website> Result { get; set; }
    }

public class Search
{... All my search variables in this model}

そして最後にビュー

@model MyApp.Models.DisplayModel
<div>
    @using (Html.BeginForm("Index", "Buying", FormMethod.Get)){
    <fieldset>
        <legend>My form</legend>
    <input id="ma" name="ma" type="hidden" disabled="disabled" value="@Model.Search.ma" />
... The way you choose to display your your view. You can either keep the same form hidden or
<input type="submit" value="mybutton"/>>
</fieldset></div>
@foreach( var item in Model.Result)
{
... The way you choose to display your List.
}
于 2013-10-20T11:23:42.480 に答える