1. ホーム
  2. asp.net

[解決済み] ASP.Net MVC ビューからコントローラへのデータの渡し方 [終了しました]。

2023-05-31 07:08:39

質問

私はASP.Netに全く新しいです、そして、私はこれが非常に基本的な質問であると確信しています。 私はレポートを生成するためのリンクがあるビューを持っていますが、レポートを生成できるようにするために、私はユーザーに適切なテキスト名を提供するように要求する必要があります。

これまでのところ、私はコントローラからビューに渡されたモデルを使用して、サーバーからビューにデータを渡すことができましたが、私はビューから私のコントローラにデータを渡す方法がわかりません。

今回は、文字列をビューからコントローラに渡すだけです。

例を挙げてアドバイスいただけると幸いです。

アップデイト

サーバにデータを戻す必要があるのはわかりますが、razorhtmlのコードやコントローラの形でどのように実現するのでしょうか?

どのように解決するのですか?

コントローラからビューにデータを渡すように、ViewModelsを使用して行うことができます。

このようなビューモデルがあるとします。

public class ReportViewModel
{
   public string Name { set;get;}
}

で、GET Actionに

public ActionResult Report()
{
  return View(new ReportViewModel());
}

で、ビューは強く型付けされたものでなければ ReportViewModel

@model ReportViewModel
@using(Html.BeginForm())
{
  Report NAme : @Html.TextBoxFor(s=>s.Name)
  <input type="submit" value="Generate report" />
}

で、あなたの HttpPost アクションメソッドで、コントローラの

[HttpPost]
public ActionResult Report(ReportViewModel model)
{
  //check for model.Name property value now
  //to do : Return something
}

または 単純に、POCOクラス(Viewmodels)なしでも可能です

@using(Html.BeginForm())
{
   <input type="text" name="reportName" />
   <input type="submit" />
}

で、HttpPostアクションで、テキストボックス名と同じ名前のパラメータを使用します。

[HttpPost]
public ActionResult Report(string reportName)
{
  //check for reportName parameter value now
  //to do : Return something
}

EDIT : コメント通り

別のコントローラに投稿したい場合は このオーバーロード をオーバーロードしてください。

@using(Html.BeginForm("Report","SomeOtherControllerName"))
{
   <input type="text" name="reportName" />
   <input type="submit" />
}

アクションメソッドからビューへのデータの受け渡し ?

同じビューモデルを使用することができ、単にGETアクションメソッドでプロパティ値を設定するだけです。

public ActionResult Report()
{
  var vm = new ReportViewModel();
  vm.Name="SuperManReport";
  return View(vm);
}

そして、あなたのビューでは

@model ReportViewModel
<h2>@Model.Name</h2>
<p>Can have input field with value set in action method</p>
@using(Html.BeginForm())
{
  @Html.TextBoxFor(s=>s.Name)
  <input type="submit" />
}