2

現時点では、次のコードがあります。

@using (Html.BeginForm("Add", "Review", "Review"))
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Review</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.TEKST)
        </div>
         <div class="editor-field">
            @Html.TextBoxFor(model => model.TEKST)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

これにより、localhost:4470/Review/Add?Length=6 に送信されます。実際に必要なのは、次の URL です: localhost:4470/Review/Add?tekst=sdfsdf

長さの代わりに「tekst」をパラメーターとして使用するようにこのコードを変更するにはどうすればよいですか? そして、テキストボックスの内容を値として。

更新:これは私のアクションメソッドです:

public ActionResult Create()
{
    return View();
}

public ActionResult Add(string tekst)
{
    ViewBag.test = tekst;
    return View();
}

Create の View ページで、Add にアクションを送信するテキストボックスまたはテキストエリアを含むフォームが必要です。テキストボックスまたはテキストエリアのコンテンツは、アクション メソッド「Add」のパラメータ「tekst」にある必要があります。

解決策: CD Smith の投稿を参照してください。

4

2 に答える 2

1

コードのどの部分がその URL を作成するのかがわからないため、「長さ = 6」がどこから来ているのかわかりません...

GET リクエストを期待しているように思えますが、(デフォルトでは) フォームは POST リクエストになります。あなたのコードに基づいて、生成されたルートは「localhost:4470/Review/Add」になると思います。フォームの内容が何であれ、フォームデータとして送信されます。

したがって、コントローラで、アクション メソッドが次のようになっているとします。

[HttpPost]
[ActionName("Add")]
public ActionResult AddViaPost(string tekst)
{
    // do something with tekst
}

次に、コントローラに正しくポストされたテキスト ボックスの値を取得する必要があります。

于 2012-05-21T23:04:51.263 に答える
1

あなたのアクションがどのように見えるかはわかりませんが、モデルを受け入れている限り、モデルで TEKST の価値があります..

別のものが必要な場合は、ビューも異なる必要があります。ビューからモデルを投稿し、POST を作成して GET パラメーターを送信しません。

現在 TEKST をパラメーターとして使用するアクションはありますか?

アップデート

わかりました、アクションを見てください...ビューを変更する必要はありません。アクションを変更する必要があります。これを試してみると、必要なものが得られます。

YourModelTypeHere実際のモデル タイプに合わせて変更します

[HttpPost]
public ActionResult Create(YourModelTypeHere model)
{
    return RedirectToAction("Add", new { tekst = model.tekst });
}

public ActionResult Add(string tekst) 
{
    ViewBag.test = tekst;
    return View();
}

ビューを少し変更する必要があります - BeginForm タグからパラメータを削除します

@using (Html.BeginForm())

したがって、Createアクションはビューをレンダリングしてから、アノテーションを持つメソッドCreateに POST を戻します。次に、の値がパラメーターとしてメソッドに送信され、ビューがレンダリングされますCreate[HttpPost]TEKSTAddRedirectToActionAdd

于 2012-05-21T23:09:37.630 に答える