7

私は MVC を初めて使用するわけではないので、送信ボタンをクリックしたときに POST の URL を変更できない理由に少し困惑しています。

PandoraRemovalTool.cshtml というシンプルなビューがあります。

@{
    ViewBag.Title = "PandoraRemovalTool";
}
@using (Html.BeginForm("PandoraGetDocsList"))
{
    <h2>Pandora Removal Tool</h2>    
    @Html.Label("Member number:")
    @Html.TextBox("txtMemberNumber")
    <br />
    <input type="submit" value="Search"/>
}

シンプルであるため、モデルを使用していません。txt 値のみを POST したいです。ただし、URLは少し奇妙です。サイト内のこのパスを指しています:

<form action="/Administration/PandoraRemovalTool?Length=18" method="post" novalidate="novalidate">    
    <h2>Pandora Removal Tool</h2>
    <label for="Member_number:">Member number:</label>
    <input id="txtMemberNumber" name="txtMemberNumber" type="text" value=""/>        
    <br>
    <input type="submit" value="Search"/>
</form>

length=18 がどこから取得されているのかわかりません。このメソッドに投稿したい:

[HttpPost]
public ActionResult PandoraGetDocsList(string txtMemberNumber)
{
    return RedirectToAction("PandoraRemovalTotal2", new {MemberNum = txtMemberNumber });
}

public ActionResult PandoraRemovalTotal2(string MemberNum)
{
    return View();
}

助けてください。

4

3 に答える 3

7

に置き換え@using (Html.BeginForm("PandoraGetDocsList"))ます@using (Html.BeginForm())

PandoraGetDocsList投稿で取得している長さ18の文字列です

アクションにリダイレクトする場合は、次のPandoraGetDocsListようにします。

@using (Html.BeginForm("PandoraGetDocsList", "Administration", new { txtMemberNumber = someString }))

説明: Html.BeginForm はパラメーターをストリングとして受け入れません。

于 2014-07-11T11:09:05.147 に答える
3

stringas パラメーターのみを受け入れるオーバーロードはありません。BeginForm(this HtmlHelper htmlHelper, Object routeValues)オーバーロードを使用しているため、として渡されたものをシリアル化しようとします。stringobject

オブジェクトの場合string、唯一のパブリック プロパティは ですLength。Length パラメーターで定義されたルートがないため、プロパティ名と値をクエリ文字列パラメーターとして追加します。

探しているオーバーロードはBeginForm(this HtmlHelper htmlHelper, string actionName, string controllerName).

@using (Html.BeginForm("PandoraGetDocsList", "controller name here"))
于 2014-07-11T11:10:39.650 に答える
-1

オーバーロードを使用してください。 @using (Html.BeginForm("PandoraGetDocsList", null))

于 2016-01-19T14:09:36.363 に答える