79

テキストボックス入力といくつかのラジオボタンがあります。たとえば、テキスト ボックスの入力 HTML は次のようになります。

<input type="text" name="IP" id="IP" />

ユーザーが Web ページのボタンをクリックしたら、コントローラーにデータを渡したい:

<input type="button" name="Add" value="@Resource.ButtonTitleAdd"  onclick="location.href='@Url.Action("Add", "Configure", new { ipValue =@[ValueOfTextBox], TypeId = 1 })'"/>

些細なことかもしれませんが、私の問題は、テキストボックスの値を取得してコントローラーに渡す方法がわからないことです。テキストボックスの値を読み取って、コントローラーに渡すにはどうすればよいipValue=@[ValueOfTextBox]ですか?

4

5 に答える 5

149

電子メール テキスト ボックスを含む単純な ASP.NET MVC サブスクリプション フォームは、次のように実装されます。

モデル

フォームのデータはこのモデルにマップされます

public class SubscribeModel
{
    [Required]
    public string Email { get; set; }
}

意見

ビュー名はコントローラーのメソッド名と一致する必要があります。

@model App.Models.SubscribeModel

@using (Html.BeginForm("Subscribe", "Home", FormMethod.Post))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.ValidationMessageFor(model => model.Email)
    <button type="submit">Subscribe</button>
}

コントローラ

コントローラーは、リクエストを処理し、適切なレスポンス ビューを返す責任があります。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Subscribe(SubscribeModel model)
    {
        if (ModelState.IsValid)
        {
            //TODO: SubscribeUser(model.Email);
        }

        return View("Index", model);
    }
}

これが私のプロジェクト構造です。「ホーム」ビュー フォルダが HomeController 名と一致することに注意してください。

ASP.NET MVC 構造

于 2013-09-18T13:14:05.433 に答える
6

ajax メソッドを使用する別の方法:

意見:

@Html.TextBox("txtValue", null, new { placeholder = "Input value" })
<input type="button" value="Start" id="btnStart"  />

<script>
    $(function () {
        $('#btnStart').unbind('click');
        $('#btnStart').on('click', function () {
            $.ajax({
                url: "/yourControllerName/yourMethod",
                type: 'POST',
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: JSON.stringify({
                    txtValue: $("#txtValue").val()
                }),
                async: false
            });
       });
   });
</script>

コントローラ:

[HttpPost]
public EmptyResult YourMethod(string txtValue)
{
    // do what you want with txtValue
    ...
}
于 2016-03-16T14:28:25.810 に答える