私は ASP.net MVC を初めて使用し、DevExpress-MVC 拡張機能を使用して、DataGrid を使用する小さなアプリケーション (従業員の時間登録) を構築します。
私の問題は次のとおりです。
ユーザーは自分の名前の略語を入力できます。これをコントローラーに送信すると、DB へのクエリが呼び出され、応答する従業員 ID が表示されます。
DataViewModel にモデルをビューに渡すようにしましたが、それをテキスト ボックスにバインドし、ViewModel からデータを取得することでそれができると考えましたが、そうではありません。
私のコードは次のようになります:
ViewModel
public class MyErfassungViewModel
{
public MyErfassung erfassung;
public String personalnummer;
public String personalkuerzel;
public List<String> dim1;
public List<String> dim2;
public List<String> dim3;
public List<String> dim4;
public List<String> dim5;
public MyErfassungViewModel(MyErfassung myerfassung)
{
this.erfassung = myerfassung;
}
}
意見
@model DevExpressMvcApplication.Models.ViewModel.MyErfassungViewModel
<div class ="Personalnummer">
@using (Html.BeginForm("getNummer","MyErfassung"))
{
<label>Personalkürzel</label>
@Html.DevExpress().TextBox(settings =>
{
settings.Name = "TextBoxPersonalkürzel";
}).Bind(Model.personalkuerzel).GetHtml()
<label>Personalnummer</label>
@Html.DevExpress().TextBox(settings =>
{
settings.Name = "TextBoxPersonalnummer";
settings.ReadOnly = true;
}).Bind(Model.personalnummer).GetHtml()
@Html.DevExpress().Button(settings =>
{
settings.Name = "TextBoxKuerzel";
settings.Text = "Holen";
settings.UseSubmitBehavior = true;
}).GetHtml()
<br>
}
</div>
コントローラ
//
// GET: /MyErfassung/
public ActionResult Index()
{
viewModel.personalkuerzel = "sese";
return View(viewModel);
}
[HttpPost]
public ActionResult getNummer()
{
String kurz = Convert.ToString(Request["TextBoxKuerzel"]);
String nr = Convert.ToString(Request["TextBoxPersonalnummer"]);
String nummer = dbRepo.getPersonalnummerByKuerzel(viewModel.personalkuerzel);
viewModel.personalnummer = nummer;
return View(viewModel);
}
ご覧のとおり、ユーザー入力を受け取り、DB-Request を送信して番号を取得する方法をいくつか試しました。ただし、リクエストまたはビューモデルのいずれかに null 参照以上が含まれています。
しかし、単純に、フォームからコントローラーにユーザー入力を渡すことができないと言いました。