added few taghelper functional tests
This commit is contained in:
parent
50d9beae17
commit
04c37a8d51
|
|
@ -2,7 +2,9 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
@ -72,5 +74,79 @@ namespace Microsoft.AspNet.Mvc.FunctionalTests
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal(expected, result.Trim());
|
Assert.Equal(expected, result.Trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ViewsWithModelMetadataAttributes_CanRenderForm()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var server = TestServer.Create(_provider, _app);
|
||||||
|
var client = server.CreateClient();
|
||||||
|
var expectedContent = await _resourcesAssembly.ReadResourceAsStringAsync(
|
||||||
|
"compiler/resources/TagHelpersWebSite.Employee.Create.html");
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var response = await client.GetAsync("http://localhost/Employee/Create");
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Assert.Equal(expectedContent, responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ViewsWithModelMetadataAttributes_CanRenderPostedValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var server = TestServer.Create(_provider, _app);
|
||||||
|
var client = server.CreateClient();
|
||||||
|
var expectedContent = await _resourcesAssembly.ReadResourceAsStringAsync(
|
||||||
|
"compiler/resources/TagHelpersWebSite.Employee.Details.AfterCreate.html");
|
||||||
|
var validPostValues = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "FullName", "Boo" },
|
||||||
|
{ "Gender", "M" },
|
||||||
|
{ "Age", "22" },
|
||||||
|
{ "EmployeeId", "0" },
|
||||||
|
{ "JoinDate", "2014-12-01" },
|
||||||
|
{ "Email", "a@b.com" },
|
||||||
|
};
|
||||||
|
var postContent = new FormUrlEncodedContent(validPostValues);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var response = await client.PostAsync("http://localhost/Employee/Create", postContent);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Assert.Equal(expectedContent, responseContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task ViewsWithModelMetadataAttributes_CanHandleInvalidData()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var server = TestServer.Create(_provider, _app);
|
||||||
|
var client = server.CreateClient();
|
||||||
|
var expectedContent = await _resourcesAssembly.ReadResourceAsStringAsync(
|
||||||
|
"compiler/resources/TagHelpersWebSite.Employee.Create.Invalid.html");
|
||||||
|
var validPostValues = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "FullName", "Boo" },
|
||||||
|
{ "Gender", "M" },
|
||||||
|
{ "Age", "1000" },
|
||||||
|
{ "EmployeeId", "0" },
|
||||||
|
{ "Email", "a@b.com" },
|
||||||
|
{ "Salary", "z" },
|
||||||
|
};
|
||||||
|
var postContent = new FormUrlEncodedContent(validPostValues);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var response = await client.PostAsync("http://localhost/Employee/Create", postContent);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
Assert.Equal(expectedContent, responseContent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Create</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form action="/Employee/Create" method="post">
|
||||||
|
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<h4>Employee</h4>
|
||||||
|
<hr />
|
||||||
|
<div class="text-danger validation-summary-errors" data-valmsg-summary="true">
|
||||||
|
<ul><li>The field Age must be between 10 and 100.</li>
|
||||||
|
<li>The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information.</li>
|
||||||
|
<li>The JoinDate field is required.</li>
|
||||||
|
</ul></div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Age">Age</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control input-validation-error" type="number" data-val="true" data-val-range="The field Age must be between 10 and 100." data-val-range-max="100" data-val-range-min="10" id="Age" name="Age" value="1000" />
|
||||||
|
<span class="field-validation-error" data-valmsg-for="Age" data-valmsg-replace="true">The field Age must be between 10 and 100.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Email">Email</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="email" id="Email" name="Email" value="a@b.com" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" Value="0" id="EmployeeId" name="EmployeeId" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="FullName">Full Name</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="text" id="FullName" name="FullName" value="Boo" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="FullName" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Gender">Gender</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input type="radio" Value="M" checked="checked" id="Gender" name="Gender" /> Male
|
||||||
|
<input type="radio" Value="F" id="Gender" name="Gender" /> Female
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Gender" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="JoinDate">JoinDate</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control input-validation-error" type="date" data-val="true" data-val-required="The JoinDate field is required." id="JoinDate" name="JoinDate" value="1/1/0001 12:00:00 AM +00:00" />
|
||||||
|
<span class="field-validation-error" data-valmsg-for="JoinDate" data-valmsg-replace="true">The JoinDate field is required.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Salary">Salary</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control input-validation-error" type="number" id="Salary" name="Salary" value="z" />
|
||||||
|
<span class="field-validation-error" data-valmsg-for="Salary" data-valmsg-replace="true">The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-offset-2 col-md-10">
|
||||||
|
<input class="btn btn-default" type="submit" Value="Create"></input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a href="/Employee">Back to List</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Create</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form action="/Employee/Create" method="post">
|
||||||
|
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<h4>Employee</h4>
|
||||||
|
<hr />
|
||||||
|
<div class="text-danger validation-summary-valid" data-valmsg-summary="true">
|
||||||
|
<ul><li style="display:none"></li>
|
||||||
|
</ul></div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Age">Age</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="number" data-val="true" data-val-range="The field Age must be between 10 and 100." data-val-range-max="100" data-val-range-min="10" id="Age" name="Age" value="" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Age" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Email">Email</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="email" id="Email" name="Email" value="" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" Value="0" id="EmployeeId" name="EmployeeId" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="FullName">Full Name</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="text" id="FullName" name="FullName" value="" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="FullName" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Gender">Gender</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input type="radio" Value="M" id="Gender" name="Gender" /> Male
|
||||||
|
<input type="radio" Value="F" id="Gender" name="Gender" /> Female
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Gender" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="JoinDate">JoinDate</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="date" data-val="true" data-val-required="The JoinDate field is required." id="JoinDate" name="JoinDate" value="" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="JoinDate" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-md-2" for="Salary">Salary</label>
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input class="form-control" type="number" id="Salary" name="Salary" value="" />
|
||||||
|
<span class="field-validation-valid" data-valmsg-for="Salary" data-valmsg-replace="true"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-offset-2 col-md-10">
|
||||||
|
<input class="btn btn-default" type="submit" Value="Create"></input>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a href="/Employee">Back to List</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Details</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4>Employee</h4>
|
||||||
|
<hr />
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>
|
||||||
|
Age
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
22
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
Email
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<a href="mailto:a@b.com">a@b.com</a>
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
Full Name
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
Boo
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
Gender
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
M
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
JoinDate
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
12/1/2014
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
Salary
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
Not specified
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
<a href="/Employee">Back to List</a>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Index</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="/Employee/Create">Create New</a>
|
||||||
|
</p>
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Age
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Email
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Full Name
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Gender
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
JoinDate
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Salary
|
||||||
|
</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
|
using Microsoft.AspNet.Mvc;
|
||||||
|
using TagHelpersWebSite.Models;
|
||||||
|
|
||||||
|
namespace TagHelpersWebSite.Controllers
|
||||||
|
{
|
||||||
|
public class EmployeeController : Controller
|
||||||
|
{
|
||||||
|
// GET: Employee
|
||||||
|
public string Index()
|
||||||
|
{
|
||||||
|
return "Index Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
// GET: Employee/Create
|
||||||
|
public IActionResult Create()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
// POST: Employee/Create
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult Create(Employee employee)
|
||||||
|
{
|
||||||
|
if (ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return View("Details", employee);
|
||||||
|
}
|
||||||
|
return View(employee);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace TagHelpersWebSite.Models
|
||||||
|
{
|
||||||
|
public class Employee
|
||||||
|
{
|
||||||
|
public int EmployeeId { get; set; }
|
||||||
|
|
||||||
|
[Display(Name = "Full Name", ShortName = "FN")]
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
[DisplayFormat(NullDisplayText = "Not specified")]
|
||||||
|
public string Gender { get; set; }
|
||||||
|
|
||||||
|
[Range(10, 100)]
|
||||||
|
public int Age { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[DataType(DataType.Date)]
|
||||||
|
public DateTimeOffset JoinDate { get; set; }
|
||||||
|
|
||||||
|
[DataType(DataType.EmailAddress)]
|
||||||
|
public string Email { get; set; }
|
||||||
|
|
||||||
|
[DisplayFormat(NullDisplayText = "Not specified")]
|
||||||
|
public int? Salary { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
@model TagHelpersWebSite.Models.Employee
|
||||||
|
|
||||||
|
@addtaghelper "Microsoft.AspNet.Mvc.TagHelpers"
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = null;
|
||||||
|
Html.Html5DateRenderingMode = Html5DateRenderingMode.Rfc3339;
|
||||||
|
}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Create</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form asp-anti-forgery="false" asp-action="Create">
|
||||||
|
|
||||||
|
<div class="form-horizontal">
|
||||||
|
<h4>Employee</h4>
|
||||||
|
<hr />
|
||||||
|
<div asp-validation-summary="All" class="text-danger">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="Age" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input asp-for="Age" class="form-control" />
|
||||||
|
<span asp-validation-for="Age" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="Email" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input asp-for="Email" class="form-control" />
|
||||||
|
<span asp-validation-for="Email" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" asp-for="EmployeeId" value="0" />
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="FullName" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input asp-for="FullName" class="form-control" />
|
||||||
|
<span asp-validation-for="FullName" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="Gender" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input type="radio" asp-for="Gender" value="M" /> Male
|
||||||
|
<input type="radio" asp-for="Gender" value="F" /> Female
|
||||||
|
<span asp-validation-for="Gender" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="JoinDate" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input asp-for="JoinDate" class="form-control" />
|
||||||
|
<span asp-validation-for="JoinDate" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label asp-for="Salary" class="control-label col-md-2" />
|
||||||
|
<div class="col-md-10">
|
||||||
|
<input asp-for="Salary" class="form-control" />
|
||||||
|
<span asp-validation-for="Salary" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-md-offset-2 col-md-10">
|
||||||
|
<input type="submit" value="Create" class="btn btn-default" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a asp-action="Index">Back to List</a>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
@model TagHelpersWebSite.Models.Employee
|
||||||
|
|
||||||
|
@{
|
||||||
|
Layout = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>Details</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h4>Employee</h4>
|
||||||
|
<hr />
|
||||||
|
<dl class="dl-horizontal">
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.Age)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.Age)
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.Email)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.Email)
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.FullName)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.FullName)
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.Gender)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.Gender)
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.JoinDate)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.JoinDate)
|
||||||
|
</dd>
|
||||||
|
<dt>
|
||||||
|
@Html.DisplayNameFor(model => model.Salary)
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
@Html.DisplayFor(model => model.Salary)
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<p>
|
||||||
|
@Html.ActionLink("Back to List", "Index")
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-*",
|
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-*",
|
||||||
"Microsoft.AspNet.Mvc.TestConfiguration": "1.0.0",
|
"Microsoft.AspNet.Mvc.TestConfiguration": "1.0.0",
|
||||||
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
|
"Microsoft.AspNet.Server.IIS": "1.0.0-*",
|
||||||
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
|
"Microsoft.AspNet.Server.WebListener": "1.0.0-*",
|
||||||
"Microsoft.AspNet.StaticFiles": "1.0.0-*"
|
"Microsoft.AspNet.StaticFiles": "1.0.0-*"
|
||||||
},
|
},
|
||||||
"frameworks": {
|
"frameworks": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue