c# - 模型未填充
问题描述
post.cshtml
@model NameSpace.Models.PostNewsModel
<style>
.col-centered {
float: none;
margin: 0 auto;
}
</style>
<br />
<br />
@using (Html.BeginForm(
"Post",
"Page",
new { ReturnUrl = ViewBag.ReturnUrl },
FormMethod.Post,
new
{
@class = "form-box",
role = "form",
id = "edit",
enctype = "multipart/form-data"
}))
{
<div style="color:red">
<span>
<p>@Html.ValidationMessageFor(model => model.PostTitle, "")</p>
<p>@Html.ValidationMessageFor(model => model.Content, "")</p>
<p>@Html.ValidationMessageFor(model => model.PostImage, "")</p>
<p>@ViewBag.Message</p>
</span>
</div>
<div class="col-sm-3 col-centered">
<label class="label" style="display: inline-block">Title</label>
<input required="" class="form-control mb-2" placeholder="Title of blog post" aria-describedby="desc_title" type="text" data-val="true" data-val-required="The Title field is required." id="PostTitle">
</div>
<br />
<div class="col-sm-3 col-centered">
<label class="label" style="display: inline-block">Image</label>
<input type="file" class="form-control mb-3" id="PostImage" class="form-control">
</div>
<br />
<div class="col-sm-3 col-centered">
<textarea id="Content" class="form-control mb-4" rows="20" aria-label="Content"></textarea>
</div>
<br />
<div class="col-sm-3 col-centered">
<input type="submit" value="Post News"/>
</div>
<br />
<br />
}
<script src="~/plugins/tinymce/tinymce.min.js"></script>
<script src="~/js/admin.js" async></script>
<link rel="stylesheet" href="~/css/admin.scss" />
PageController.cs 帖子
[Route("post")]
[HttpPost]
public ActionResult post(PostNewsModel model, HttpPostedFileBase imageFile)
{
if (ModelState.IsValid)
{
if (imageFile != null && imageFile.ContentLength > 0)
{
try
{
var rnd = "0123456789qwertyuiopasdfghjklzxcvbnm".Scramble().Substring(0, 10);
var random = Md5Hash.Hash(rnd);
string path = Path.Combine(Server.MapPath("~/img/News"), Path.GetFileName(random + imageFile.FileName));
imageFile.SaveAs(path);
ViewBag.Message = "File uploaded successfully";
}
catch (Exception ex)
{
ViewBag.Message = "ERROR:" + ex.Message.ToString();
}
}
else
{
ViewBag.Message = "You have not specified a file.";
}
if (PostNews(model, imageFile))
{
ViewBag.Message = "Successfully posted";
}
else
{
ViewBag.Message = "It's not valid for some reason.";
}
}
else
{
var errors = ModelState.Select(x => x.Value.Errors)
.Where(y => y.Count > 0)
.ToList();
foreach (var error in errors)
{
Console.WriteLine(error);
}
Console.WriteLine(model.PostTitle);
Console.WriteLine(model.Content);
Console.WriteLine(model.PostImage);
}
return View(model);
}
PostNewsModel.cs
public class PostNewsModel
{
public string PostTitle { get; set; }
public string Content { get; set; }
public string PostImage { get; set; }
public string PostDate { get; set; } = DateTime.Now.ToString();
public string PostViews { get; set; } = "1";
}
当我填写表格并按“发布新闻”时,它到达了控制器中的发布功能,但传递了一个空模型(所有字段均为空)。我尝试更改字段、ID、名称等,但无法解决。还浏览了互联网,即使发现人们遇到此问题的案例,所提供的解决方案都没有为我工作。对不起新手问题,因为我对 ASP 世界很陌生。
更新:
解决了这个问题。问题是我id = "edit"
在我的表格中使用了。我不知道它是如何以及为什么它不起作用。
解决方案
推荐阅读
- python - Python:仅显示必要的小数
- javascript - 如何使用异步操作遍历嵌套数组?
- cmake - CMake 的 add_custom_command 不会触发库的重建
- javascript - 从 HTML、CSS、JS 转换为 JSX、CSS、JS 时,如何在 react 中链接我的 javascript 文件?
- python - 在 Pyhon 中写入 CSV 文件,用于数据帧。记录结果
- php - 为什么我的电子邮件格式检查器不起作用?
- sql - 如何在postgres中对几个月的日期记录分组后填补时间间隔
- google-app-engine - GAE 的默认配额是否不够大,无法运行 phoenix 项目?
- php - Bootstrap 导航栏切换器图标在移动设备上不起作用
- r - R 中是否有替代 elrm(精确逻辑回归)的方法 - 存储库中没有 elrm 包