1
当我单击按钮以获取用户信息以填充文本框时,我遇到了永久500错误消息。我已经尝试了很多东西来弄清楚,但我非常难以忍受这一点,任何帮助将不胜感激。MVC 5获取用户详细信息时出现错误,并在点击文本框中填充时出错
UserController.cs
using System;
using System.Web.Mvc;
using SampleMvc.Domain;
using SampleMvc.Models;
using SampleMvc.Repository;
namespace SampleMvc.Controllers
{
public class UserController : Controller
{
private readonly IUserRepository _userRepository;
public UserController()
{
_userRepository = new UserRepository();
}
public UserController(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public ActionResult UserDetails()
{
UserModel model = new UserModel();
return View(model);
}
public JsonResult PopulateDetails(UserModel model)
{
UserResultModel userResultModel = new UserResultModel();
if (String.IsNullOrEmpty(model.UserId))
{
userResultModel.Message = "UserId can not be blank";
return Json(userResultModel);
}
User user = _userRepository.GetUser(model.UserId);
if (user == null)
{
userResultModel.Message = String.Format("No UserId found for {0}", model.UserId);
return Json(userResultModel);
}
userResultModel.LastName = user.LastName;
userResultModel.FirstName = user.FirstName;
userResultModel.Message = String.Empty; //success message is empty in this case
return Json(userResultModel);
}
}
public class UserResultModel
{
public string LastName { get; set; }
public string FirstName { get; set; }
public string Message { get; set; }
}
}
UserModel.cs
namespace SampleMvc.Models
{
public class UserModel
{
public string UserId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
}
}
UserDetails.Cshtml
@{
ViewBag.Title = "UserDetails";
}
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
function populateUserDetails() {
var user = {};
user.UserId = $("#UserId").val();
$.getJSON("PopulateDetails", user, updateFields);
//$.post("PopulateDetails", user, updateFields, 'json');
};
updateFields = function (data) {
$("#LastName").val(data.LastName);
$("#FirstName").val(data.FirstName);
$("#Message").html(data.Message);
};
</script>
@using (Html.BeginForm())
{
<div>
<fieldset>
<legend>User Details</legend>
<p>
<label for="UserId">UserId:</label>
@Html.TextBox("UserId")
<input type="button" id="GetUser" value="Populate User Details" onclick='populateUserDetails()' />
</p>
<p>
<label for="LastName">LastName:</label>
@Html.TextBox("LastName")
</p>
<p>
<label for="FirstName">FirstName:</label>
@Html.TextBox("FirstName")
</p>
</fieldset>
</div>
}
域夹User.cs
个namespace SampleMvc.Domain
{
public class User
{
public string UserId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public int Age { get; set; }
}
}
Repository文件夹IUserRepository.cs
using SampleMvc.Domain;
namespace SampleMvc.Repository
{
public interface IUserRepository
{
User GetUser(string userId);
}
}
Repository文件夹UserRepository.cs
using System.Collections.Generic;
using System.Linq;
using SampleMvc.Domain;
namespace SampleMvc.Repository
{
public class UserRepository : IUserRepository
{
#region IUserRepository Members
public User GetUser(string userId)
{
return Database.Users.Where(user => user.UserId == userId).FirstOrDefault();
}
#endregion
}
public class Database
{
public static List<User> Users = new List<User>
{
new User
{
UserId = "john_doe",
LastName = "Doe",
FirstName = "John",
Age = 25
},
new User
{
UserId = "user2",
LastName = "SomeLastName",
FirstName = "SomeFirstNAme",
Age = 28
},
};
}
}
修复感谢答案的变化
public JsonResult PopulateDetails(UserModel model)
{
UserResultModel userResultModel = new UserResultModel();
if (String.IsNullOrEmpty(model.UserId))
{
userResultModel.Message = "UserId can not be blank";
return Json(userResultModel,JsonRequestBehavior.AllowGet);
}
User user = _userRepository.GetUser(model.UserId);
if (user == null)
{
userResultModel.Message = String.Format("No UserId found for {0}", model.UserId);
return Json(userResultModel,JsonRequestBehavior.AllowGet);
}
userResultModel.LastName = user.LastName;
userResultModel.FirstName = user.FirstName;
userResultModel.Message = String.Empty; //success message is empty in this case
return Json(userResultModel, JsonRequestBehavior.AllowGet);
}
}
我仍然得到这样的错误 – Donny
这可能是一些其他的错误。只需在新的浏览器中打开网址即可。如果您打开浏览器的网络选项卡,则可能会看到该网址。 – Shyju
哦,等待它已修复 – Donny