ユーザーがサインアップボタンをクリックした後に2つのテキストボックス名と姓を持つページがあります。APIが実行され、ユーザー情報が返され、別のページ(ビュー)ユーザーの電話番号、電子メール、..それはAPIが返す情報で満たされます。私は1つのコントローラと2つのビューを持っています。 私はAPIから情報を取得し、2番目のビューを返しますが、私が持っている情報でテキストボックスをどのように埋めるかはわかりません。問題は、ビューでモデルを使用して、私は2つのモデルを各ビューごとに1つ持っています。MVCでコントローラメソッドから別のコントローラメソッドにデータを渡す
辞書に渡されるモデル項目の型が 'System.Collections.Generic.Dictionary`2 [System.String、System.Object]'であるが、この辞書Models.CreateLogInRequest型のモデル項目が必要です。
これは私のコントローラである:
[HttpGet]
public ActionResult SearchUser()
{
return View();
}
[HttpPost]
public async Task<ActionResult> SearchUser(UserSearchRequest userSearchRequest)
{
HttpClient client = new HttpClient();
object userObject = null;
string baseUrl = "http://test/api/users";
if (userSearchRequest.FirstName != null && userSearchRequest.LastName)
{
var response = await client.GetAsync(string.Format("{0}{1}/{2}/{3}", baseUrl, "/users", userSearchRequest.FirstName, userSearchRequest.LastName));
if (response.IsSuccessStatusCode)
{
userObject = new JavaScriptSerializer().DeserializeObject(response.Content.ReadAsStringAsync().Result) as object;
}
}
if (userObject != null)
{
return View("Create", userObject);
}
return View("Create", null);
}
[HttpPost]
public ActionResult Create(CreateLogInRequest createLogInRequest)
{
return View();
}
これは2つのテキストボックスを示している私の最初のビューです:
@using (Html.BeginForm("SearchUser", "SignUp", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input id="FirstName" name="FirstName" type="text" placeholder="First NAME" />
<input id="LastName" name="LastName" type="text" placeholder="LastName " />
<input id="btnSubmit" name="btnSubmit" type="submit" value="SIGN UP TODAY" />
}
、これが第一ビューのための私のモデルである:
public class UserSearchRequest
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
これは2番目のビューです。
@model Models.CreateLogInRequest
@{
ViewBag.Title = "Create";
}
@using (Html.BeginForm("create", "SignUp", FormMethod.Post))
{
@Html.AntiForgeryToken()
<input id="Email" name="Email" type="text" placeholder="Email" value="@Model.Email" />
<input id="Phone" name="Phone" type="text" placeholder="Phone" value="@Model.Phone" />
<input id="btnSubmit" name="btnSubmit" type="submit" value="CREATE ACCOUNT" />
}
、これは、このビューのためのモデルである:
public class CreateLogInRequest
{
public string Email { get; set; }
public string Phone { get; set; }
....
}
エラーメッセージは便利です。あなたは 'JavascriptSerializer'にあなたが脱直列化している' Type'を伝える必要があります。 'Deserialize()'メソッドのジェネリック版が存在するはずです。 – PeteGO
私はあなたが 'RedirectToAction( 'Create'、userObject)'を返したいと思います。 'return View(...) 'を使うと、最初に他のコントローラメソッドに行くことはありません。 – PeteGO