• 1000 ,
Ошибка CS1061 'RoundViewModel' не содержит определения для 'Score', и не может быть найден доступный метод расширения 'Score', принимающий первый аргумент типа 'RoundViewModel' (если вам не хватает использования директива или ссылка на сборку?)
Код для создания.
public ActionResult Create()
{
//Get database values
var dbcourse = db.Course.ToList();
//Make selectlist, which is IEnumerable<SelectListItem>
var courseNameDropdownList = new SelectList(db.Course.Select(item => new SelectListItem()
{
Text = item.CourseName.ToString(),
Value = item.CourseId.ToString()
}).ToList(), "Value", "Text");
// Assign the Selectlist to the View Model
var viewCourse = new RoundViewModel()
{
Course = dbcourse.FirstOrDefault(),
// The Dropdownlist values
CourseNamesDropdownList = courseNameDropdownList,
};
return View(viewCourse);
}
Код для RoundViewModel.
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
using System.Web.Mvc;
namespace GolfScore.Models
{
public class RoundViewModel
{
[Key]
public int RoundId { get; set; }
[Display(Name = "Round")]
public int RoundNumber { get; set; }
[Display(Name = "Date round played")]
[DataType(DataType.DateTime)]
public DateTime DateTime { get; set; }
public int? CourseId { get; set; }
public virtual CourseViewModel Course { get; set; }
public IEnumerable<SelectListItem> CourseNamesDropdownList { get; set; }
}
}
код для ScoreViewModel
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
namespace GolfScore.Models
{
public class ScoreViewModel
{
[Key]
public int ScoreId { get; set; }
[Range(1 , 20)]
public int ScoreTotal { get; set; }
public int? HoleId { get; set; }
public virtual HoleViewModel Hole { get; set; }
public int? RoundId { get; set; }
public RoundViewModel Round { get; set; }
}
}
и код для создания представления
<dd class="col-sm-10">
<table class="table">
<tr>
<th>Hole</th>
<th>Par</th>
<th>Score</th>
</tr>
@foreach (var item in Model.Course.Holes)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.HoleNumber)
</td>
<td>
@Html.DisplayFor(modelItem => item.Par.ParNumber)
</td>
<td>
@Html.DisplayFor(model => Model.Score.ScoreTotal )
<div class="col-md-10">
@Html.EditorFor(model => Model.Score.ScoreTotal, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => Model.Score, "", new { @class = "text-danger" })
</div>
</td>
</tr>
}
</table>
</dd>
Я попытался изменить RoundViewModel
, включив
public int? ScoreId { get; set; }
public virtual ScoreViewModel Score { get; set; }
, но это вызывает следующее ошибка:
Невозможно определить основной конец ассоциации между типами GolfScore.Models.ScoreViewModel и GolfScore.Models.RoundViewModel. Основной конец этой связи должен быть явно настроен с использованием либо API-интерфейса текучести отношений, либо аннотаций данных. ' *