Это мой вид для выпадающего списка, который должен быть заполнен значениями в RenewMember.
@model RenewMember
@{
ViewData["Title"] = "Membership Renewal";
Layout = "~/Views/Shared/_Layout.cshtml";
string msg = ViewData["msg"] as string;
var cat = ViewData["prices"] as List<dynamic>;
cat.Insert(0, new { value = "0", text = "---Select---" });
@section ScriptSection {
<script>
function DisplayPrice() {
var price1yearmember = 100;
var rate = 1;
var subtotal = 0;
if (selectedCurrency == "USD") {
subtotal = price1yearmember * rateUSD;
}
else if (selectedCurrency == "MYR") {
subtotal = price1yearmember * rateMYR;
}
else if (selectedCurrency == "SGD") {
subtotal = price1yearmember * rate;
}
$("#txtPrice").val(subtotal.toFixed(2));
}
/** $('#edit').click(function() {
$('#YearlyRate').prop('readonly', false);
});**/
</script>
}
}
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Contact Us</title>
<link href="~/lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet" />
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.min.js"></script>
<link href="~/lib/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-
datetimepicker.min.css" rel="stylesheet" />
<script src="~/lib/moment/min/moment.min.js"></script>
<script src="~/lib/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-
datetimepicker.min.js"></script>
<script type='text/javascript' src='https://www.google.com/recaptcha/api.js?
onload=recaptchaCallback&render=explicit&ver=2.0'></script>
<style>
.input-group-addon {
cursor: pointer;
}
#BsDateTimePicker {
cursor: pointer;
}
</style>
<script type="text/javascript">
$(function () {
$('#BsDateTimePicker').datetimepicker({
format: 'YYYY-MM-DD'
});
});
</script>
<script src="~/lib/jquery-validation/src/core.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js">
</script>
<meta charset="utf-8" />
<title>Contact Us</title>
<style type="text/css">
#head {
font-family: 'Times New Roman', Times, serif;
font-style: oblique;
font-size: larger;
text-align: center;
color: black;
will-change: contents;
font-weight: 900;
}
#late {
font-family: 'Times New Roman', Times, serif;
font-style: italic;
font-size: larger;
text-align: center;
color: black;
will-change: contents;
}
.field-validation-error {
font-weight: bold;
color: red;
/*background-color: yellow;*/
font-family: 'Times New Roman', Times, serif;
font-style: unset;
font-size: medium;
}
.validation-summary-errors {
border: 2px dashed red;
color: red;
/*background-color: yellow;*/
font-weight: bold;
margin: 12px;
}
</style>
</head>
<form class="form-horizontal" asp-action="Index">
<div class="form-group">
<label class="control-label col-sm-3" asp-for="Email">Email : </label>
<div class="col-sm-5">
<input asp-for="Email" class="form-control" />
</div>
<div class="has-error">
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Id" class="col-sm-4 control-label">Duration : </label>
<div class="col-sm-6">
<select id="ddlPrices" class="form-control col-sm-6" asp-for="Id">
@foreach (var item in cat)
{
<option value="@item.value">@item.text</option>
}
</select>
</div>
<div class="has-error">
<span asp-validation-for="Id" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Price: </label>
<div class="col-sm-6" style="padding-right:15px;">
<input id="txtPrice" class="form-control" value="-" readonly disabled
style="background-color:#C0C0C0" />
</div>
<div class="col-sm-1" style="padding-left:0">
@{
Html.RenderPartial("_CurrencySelector");
}
</div>
</div>
}
@if (User.IsInRole("Admin") || User.IsInRole("SuperUser"))
{
<div class="form-group">
<div class="col-sm-offset-3 col-sm-6">
<input type="submit" class="btn btn-primary" value="Save" />
</div>
</div>
}
else
{
<div class="form-group">
<div class="col-sm-offset-3 col-sm-6">
<input type="submit" class="btn btn-primary" value="Renew" />
</div>
</div>
}
</form>
Вот для него контроллер
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using PSS.Models;
using System.Security.Claims;
using System.Data;
using Microsoft.EntityFrameworkCore;
using System.Text;
using System.Threading;
using System.Net.Mail;
using System.Net;
using System.Web;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using MimeKit;
using static System.Net.Mime.MediaTypeNames;
using MailKit.Net.Smtp;
using System.Linq.Dynamic;
using Microsoft.AspNetCore.Authorization;
using System.Dynamic;
namespace PSS.Controllers
{
public class RenewMemberController : Controller
{
private AppDbContext _dbContext;
public RenewMemberController(AppDbContext dbContext)
{
_dbContext = dbContext;
}
public IActionResult Index()
{
DbSet<RenewMember> dbs = _dbContext.RenewMember;
List<RenewMember> model = dbs.ToList();
return View(model);
}
public IActionResult DisplayPrice()
{
DbSet<RenewMember> dbs = _dbContext.RenewMember;
var lstPrices =
dbs.ToList<RenewMember>()
.OrderBy(p => p.Id)
.Select(
p =>
{
dynamic d = new ExpandoObject();
d.value = p.Id;
d.text = p.DisplayPrice;
return d;
}
)
.ToList<dynamic>();
ViewData["prices"] = lstPrices;
return View();
}
}
}
Модель:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations;
namespace PSS.Models
{
public class RenewMember
{
public int Id { get; set; }
[DataType(DataType.EmailAddress)]
[Required(ErrorMessage = "Required Field")]
public string Email { get; set; }
public string Duration { get; set; }
public float Rate { get; set; }
public string DisplayPrice { get; set; }
public float Price { get; set; }
public string Currency { get; set; }
public float CurrencyRate { get; set; }
}
}
Как мне исправить эту ошибку?Моя цель здесь состоит в том, чтобы отобразить элементы из столбца базы данных под названием «DisplayPrice».Мне нужно будет разрешить роли администратора иметь возможность редактировать выпадающий список / базу данных позже, чтобы ее нельзя было жестко запрограммировать.
Ошибка, которую она выделила, была строкой 10 моих просмотров
cat.Insert(0, new { value = "0", text = "---Select---" });