Vid*_*iDG 3 c# asp.net-mvc asp.net-mvc-4
我是MVC框架的新手.我对传递参数Name有点困惑.这是我的员工类:
namespace TestApplication.Models
{
[Table ("Employee")]
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string City { get; set; }
public int DepartmentId { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
namespace TestApplication.Controllers
{
public class EmployeeController : Controller
{
//
// GET: /Employee/
public ActionResult Details(int **empid**)
{
EmployeeContext employeecontext = new EmployeeContext();
Employee employee = employeecontext.employees.Single(emp => emp.EmployeeId == id);
return View(employee);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的详细信息视图:
@model TestApplication.Models.Employee
<div style="font-family :Arial">
<h2>Employees Details</h2>
<table style="font-family:Arial ">
<tr>
<td>
<b>Employee Id:</b>
</td>
<td>
@Model.EmployeeId
</td>
</tr>
<tr>
<td>
<b>Employee Name:</b>
</td>
<td>
@Model.Name
</td>
</tr>
<tr>
<td>
<b>Employee City:</b>
</td>
<td>
@Model.City
</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
在这段代码中,当我用/ Employee/Details/1运行这个应用程序时, 它会给我一个错误
参数字典包含'TestApplication.Controllers.EmployeeController'中方法'System.Web.Mvc.ActionResult Details(Int32)'的非可空类型'System.Int32'的参数'empid'的空条目.可选参数必须是引用类型,可空类型,或者声明为可选参数.参数名称:参数
但是当我在操作中使用id作为参数名称时它会完美运行,那么有什么区别?我如何选择参数名称?
看看你的默认MVC路线App_Start/RouteConfig.cs,会说出这样的话:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
这就是说,如果你传递一个像那样的URL,/Employee/Details/1那么值的1参数名称id就不会映射到empid.你可以:
empidempid为id/Employee/Details?empid=1| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |