Очень просто у меня есть данные в таблице на сервере, которые не отображаются, когда моя страница ASP.NET MVC скомпилирована в HTML.
Я знаю, что все в бэкэнде работает, потому что в других представлениях проблем нет, но по какой-то причине на этой странице это не работает.
Я подозреваю, что это как-то связано с моей моделью, в которой есть два класса, потому что это единственная страница, которая делает это, но я не совсем уверен, так как я новичок в MVC.
Вот модель, которую я буду называть ModelFile.cs :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Project.Subgroup.Models
{
public class ClassIActuallyNeed
{
public int Id { get; set; }
public string Html { get; set; } //<---This is the data I want
public string Version { get; set; }
public bool Deleted { get; set; }
}
public class ClassMyFriendInsistsINeed
{
public int Id { get; set; }
public string Name { get; set; }
public byte[] Signature { get; set; }
public bool Deleted { get; set; }
public virtual ClassIActuallyNeed ClassIActuallyNeed { get; set; }
}
}
... и контроллер, который называется MainController.cs :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Project.Models;
using Project.Subgroup.Models;
using System.Data.Entity;
using Project.Models.Authentication;
namespace Project.Subgroup.Controllers
{
public class MainController : Controller
{
private MyDatabase context = new MyDatabase();
// GET: Lobby/Home
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult FormPage()
{
return View();
}
[HttpPost]
public ActionResult FormPage(ClassIActuallyNeed model)
{
if (ModelState.IsValid)
{
using (var context = new MyDatabase())
{
var modelfile = new ModelFile
{
Name = model.Name,
Signature = model.Signature,
ClassIActuallyNeedId = model.ClassIActuallyNeedId
};
}
}
return View(model);
}
}
}
... и, наконец, представление: FormPage.cshtml :
@model Project.Models.ClassIActuallyNeed
@{
ViewBag.Title = "My Page";
Layout = "~/Subgroup/Views/Shared/_Layout.cshtml";
}
<h2 >@ViewBag.Title</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.DisplayFor(model => model.Html) //<---- the problem
//There is other form stuff in here
}
Данные "Html" - это буквально просто строка, содержащая HTML, которую я хочу разместить на своей веб-странице. Это единственная строка в этой таблице, и когда я использую «DisplayNameFor» вместо «DisplayFor», он успешно помещает имя «Html» на мою страницу.
Извините за рвоту кода, я вырезал все, что, как я знал, не имело отношения, но я просто не могу точно определить, где моя проблема. В Visual Studio или в консоли нет ошибок любого рода. Все остальное на странице работает отлично, включая мои JS.
Редактировать: Я ценю все входные данные до сих пор. Я знаю, что проблема не в том, что у меня нет заполненной модели, поскольку она заполняется удаленной базой данных. Это работает на любой другой странице.
Как я и подозревал, RequestVerificationToken определенно должен быть там и не связан.
Также, чтобы уточнить: проблема не в том, что вместо HTML отображается неформатированный текст. Проблема в том, что он вообще ничего не отображает.