2 metin kutusuna sahip bir sayfam var. Kullanıcı adından sonra Ad ve Soyadı kaydol düğmesine tıkladığınızda API, kullanıcı bilgilerini çalıştırır ve döndürür ve başka bir sayfayı (görünümü) gösterir. kullanıcı Telefon, e-posta, .. Bu API'nın verdiği bilgi ile doldurun. 1 kontrolör ve 2 görünüm var. API'dan bilgi alıyorum ve ikinci görünümü döndürüyorum, ancak metin kutularını sahip olduğum bilgi ile nasıl doldurduğumu bilmiyorum. Sorun, modellerin görüşlerini kullanmaktır, her görünüm için bir tane modelim var. İkinci görünümü çağırdığımda bu hatayı alıyorum:MVC'de bir denetleyici yönteminden diğerine veri geçirme
Sözlüke aktarılan model öğesi 'System.Collections.Generic.Dictionary`2 [System.String, System.Object]' türündendir, ancak bu sözlük Model.CreateLogInRequest 'türünde bir model öğesi gerektirir.
@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" />
}
ve bu 1. görünüm için benim modeldir:
public class UserSearchRequest
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
bu 2 metin kutuları gösterir benim ilk Görünüm olduğunu
[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();
}
:
Bu
benim denetleyicisi olan Bu ikinci görünümdür:@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" />
}
ve bu görünüm için model geçerli: yorumlarımı bakın ve bu deneyin
public class CreateLogInRequest
{
public string Email { get; set; }
public string Phone { get; set; }
....
}
Hata mesajı yararlıdır. "Type" ın hangi serileştirildiğini "JavascriptSerializer" 'e söylemeniz gerekir. Deserialize() yönteminin genel bir sürümü olmalıdır. – PeteGO
Ben de RedirectToAction ('Create', userObject) 'döndürmek istediğinizi düşünüyorum. 'Return View (...)' seçeneğini kullanmak, önce başka bir denetleyici yöntemine gitmeyecektir. – PeteGO