我有一个ASP.NET MVC项目,我想在文章中发布一篇文章然后在页面上显示该文章的片段.当用户注释时,我还想在保存到数据库后显示注释.我在这两种情况下使用AJAX和调用OnFailure和OnSuccess方法.
OnFailure保存帖子而不是注释时,该方法仅会启动(这是因为即使成功保存,页面也不会更新).OnSuccess根本没有调用该方法,因为我的页面没有更新.
我正在使用jquery 2.1.4并在我的项目中加载了jquery.unobtrusive-ajax脚本
这是我的代码.
//查看用于创建帖子
@using (Ajax.BeginForm("Create", "Post",
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "insertnewpostbelow",
InsertionMode = InsertionMode.InsertAfter,
OnSuccess = "postingSucceeded()",
OnFailure = "postingFailed()"
}))
{
//View code left out
}
Run Code Online (Sandbox Code Playgroud)
//服务器端用于保存帖子和更新 PartialView
[HttpPost, ValidateAntiForgeryToken, ValidateInput(false)]
public async Task<PartialViewResult> Create
([Bind(Include = "ID,Title,Message,PostedOn,isAbuse,By")] Post post)
{
if (ModelState.IsValid)
{
var list = new List<Post>();
list.Add(post);
try
{
db.Posts.Add(post);
await db.SaveChangesAsync();
return PartialView("_Posts", list);
}
catch …Run Code Online (Sandbox Code Playgroud) 我发布后,我无法弄清楚如何让我的模型(EF4)的导航属性不为空.我在几个基本页面上遇到同样的问题.
即我有一个表使用LoginID的外键估计(来自Login表).
在我的HTTPGet Edit方法中,我找到了我想要的具体估计值:
Estimate estimate = db.Estimates.Find(id)
Run Code Online (Sandbox Code Playgroud)
从这里我可以从Login表访问Login导航属性和该记录的任何属性.
我将此估计值作为我的强类型视图的模型.当我调用HTTPPost Edit方法(并将模型作为参数传递给它)时,我的Login导航属性为null,我无法访问其中的任何内容.我当然可以解决这个问题,因为我的估计课程中确实有LoginID字段,但感觉非常笨重,而且我错过了实体框架的一个关键优势.
我在多个页面上遇到同样的问题,我将带有导航属性的模型传递给我的视图,视图返回带有null导航属性的模型.
下面是我遇到问题的代码示例:
[HttpPost]
public ActionResult Edit(Estimate estimate)
{
var test = estimate.Login.CompanyProfileID;
...
Run Code Online (Sandbox Code Playgroud)
我可以在视图中访问Model.Login及其所有属性,所以我知道它正确地传递给了视图.当我的表单提交时,它只是没有将导航属性传递回控制器.
我有一个看似简单的问题,我已经动态创建了一个DataTable,并且我很好地添加了行.但是我有一个列,它将有一个标志,这是一个图像.我已经将两个标志(.png图像)导入到项目资源中.但是我无法将列的DataType设置为System.Type.Bitmap,因为DataColumn不支持,因为这里可以看到.我见过一个解决方案,说我将DataType设置如下
dataColumn = new DataColumn("Flag");
dataColumn.DataType = System.Type.GetType("System.Byte[]"); //Replacing System.Byte[] with System.Type.Bitmap throws Type Exception
dataTable.Columns.Add(dataColumn);
Run Code Online (Sandbox Code Playgroud)
然而,抛出一个Exception声明编译器期望Byte []但得到了Bitmap.
以下是我向DataTable添加行的方法
row["Part Number"] = part;
row["Module Name"] = populator.LookUpAValue(moduleSql);
row["Flag"] = Properties.Resources.Yellow_Flag;
row["Location"] = populator.LookUpAValue(nameSql);
dataTable.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)
这是我的问题,我将DataType保存为图像列,因此当我显示到DataGridView时,我看到显示的图像.如果不在DataGridView上设置DataType而不是显示图像,我会得到文本
System.Drawing.Bitmap