В моем основном проекте Asp.net я получаю ошибку ERROR :The model item passed into the ViewDataDictionary is of type 'System.Net.Http.HttpResponseMessage', but this ViewDataDictionary instance requires a model item of type MENTOR.Models.Mentor. Что я пытаюсь сделать, так это;
В login controller я отправляю данные логина и пароля в качестве параметра в API, и все, что мне нужно, это получить свойство mentorId (какое свойство Mentor) из ответа API. Затем мне нужно отправить этот идентификатор в действие Profilementor controller. Затем я получу этот идентификатор из сеанса, который исходит от login controller, затем отправит его в API и заполнит модель профиля моделью ответа. Отличие моего вопроса от других таких же вопросов в том, что я не отправляю и модель в mentor controller из login controller. Все, что мне нужно, это просто запустить profile действие mentor controller
Вот мой login controller;
[HttpPost]
public async Task<IActionResult> Login(User user)
{
using (var client = new HttpClient())
{
IList<KeyValuePair<string, string>> userCollection = new List<KeyValuePair<string, string>> {
{ new KeyValuePair<string, string>("email",user.email) },
{ new KeyValuePair<string, string>("password", user.password) }
};
var result = await client.PostAsync("http://localhost:3000/mentor/login", new FormUrlEncodedContent(userCollection));
string resultContent = await result.Content.ReadAsStringAsync();
var response = JsonConvert.DeserializeObject<Mentor>(resultContent);
HttpContext.Session.SetInt32("mentorId", response.mentorId);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
return RedirectToAction("Profile", "Mentor");
}
Вот мой mentor controller;
[HttpGet]
public async Task<IActionResult> Profile()
{
using (var client = new HttpClient())
{
var id = HttpContext.Session.GetInt32("mentorId");
var response = await client.GetAsync("http://localhost:3000/mentor/getProfileInfo/" + id);
string responseContent = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<Mentor>(responseContent);
result.mentorId = Convert.ToInt32(id);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
return View(response);
}
else
{
return StatusCode(404, result.mentorId);
}
}
}
и моя модель profile view;
@model MENTOR.Models.Mentor
спасибо заранее :))
да сработало. Как я мог это пропустить...





Исправьте ошибку - вместо ответа используйте результат:
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
var result = JsonConvert.DeserializeObject<Mentor>(responseContent);
result.mentorId = Convert.ToInt32(id); //Maybe you don't need it???
return View(result);
}
else
{
return StatusCode(404, id);
}
Большое спасибо !! Как я мог это пропустить... :(
кажется, вы возвращаете «HttpResponseMessage» -
return View(response);скорее результат?