Dictionary 可选参数必须是引用类型、可为null的类型或声明为可选参数
我被这段代码震惊了,每当我试图查看文章列表时,我都会遇到这个错误。 错误在于参数字典包含不可为空的类型Dictionary 可选参数必须是引用类型、可为null的类型或声明为可选参数,dictionary,parameters,nullable,controllers,Dictionary,Parameters,Nullable,Controllers,我被这段代码震惊了,每当我试图查看文章列表时,我都会遇到这个错误。 错误在于参数字典包含不可为空的类型System.Int32的参数articleId,方法System.Web.Mvc.ActionResult Detail(Int32)的Crossroads.Controllers.ArticleController的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数 这是控制器: using System; using System.Collections.
System.Int32
的参数articleId
,方法System.Web.Mvc.ActionResult Detail(Int32)
的Crossroads.Controllers.ArticleController
的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。
参数名称:参数
这是控制器:
using System;
using System.Collections.Generic;
using System.Web.Mvc;
using System.Web.Security;
using Crossroads.Models;
using System.Linq;
using System.Web;
using Crossroads.Models.Repositories;
namespace Crossroads.Controllers
{
[HandleError]
public class ArticleController : BaseController
{
private IArticleRepository _ArticleRepository;
public ArticleController()
: this(new ArticleRepository())
{ }
public ArticleController(IArticleRepository articleRepo)
{
_ArticleRepository = articleRepo;
}
public ActionResult Index(bool? archived)
{
if (archived != null && archived.Value.Equals(true))
{
return View("IndexArchived", _ArticleRepository.ListArchivedArticles());
}
else
{
return View(_ArticleRepository.ListArticles());
}
}
public ActionResult Detail(int Id)
{
var article = _ArticleRepository.GetArticle(Id);
if (article.Published)
{
return View("Details", article);
}
else
{
postStatus = new PostStatusViewModel()
{
Status = Status.Warning,
Message = "I'm sorry, article " + article.Title + " has been deleted. <br />Please update your bookmark."
};
return RedirectToAction("PostStatus", postStatus);
}
}
public ActionResult Details(int id, string articleTitle)
{
return RedirectToAction("Detail", id);
}
[Authorize(Roles = "Manager")]
public ActionResult New()
{
return View("New", new Articles());
}
[Authorize(Roles = "Manager")]
[ValidateInput(false)]
public ActionResult Edit(int id)
{
var viewModel = _ArticleRepository.GetArticle(id);
return View(_ArticleRepository.GetArticle(id));
}
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
[ValidateInput(false)]
[Authorize(Roles = "Manager")]
public ActionResult Create(Articles model)
{
try
{
model.CreatedBy = Membership.GetUser().UserName;
model.CreatedDate = DateTime.Now;
model.ModifiedBy = Membership.GetUser().UserName;
model.ModifiedDate = DateTime.Now;
_ArticleRepository.CreateArticle(model);
return RedirectToAction("Index");
}
catch
{
return View("Edit", model.Id);
}
}
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
[ValidateInput(false)]
[Authorize(Roles = "Manager")]
public ActionResult Update(Articles model)
{
try
{
model.ModifiedBy = Membership.GetUser().UserName;
model.ModifiedDate = DateTime.Now;
_ArticleRepository.EditArticle(model);
return RedirectToAction("Details", new { id = model.Id });
}
catch (Exception ex)
{
_DBLogging.LoggError(ex);
postStatus = new PostStatusViewModel()
{
Status = Status.Error,
Message = ""
};
return View("Edit");
}
}
public JsonResult ManageArchiveArticle(int articleId, bool isArchived)
{
var result = new Dictionary<string, string>();
try
{
var article = _ArticleRepository.GetArticle(articleId);
article.IsArchived = isArchived ? false : true;
article.ModifiedBy = Membership.GetUser().UserName;
article.ModifiedDate = DateTime.Now;
if (article.IsArchived) article.ArchiveDate = DateTime.Now;
article = _ArticleRepository.EditArticle(article);
result.Add("isArchived", article.IsArchived.ToString().ToLower());
}
catch (Exception ex)
{
_DBLogging.LoggError(ex);
}
return Json(result);
}
public JsonResult ManagePublishArticle(int articleId, bool isPublished)
{
var result = new Dictionary<string, string>();
try
{
var article = _ArticleRepository.GetArticle(articleId);
article.Published = isPublished ? false : true;
article.ModifiedBy = Membership.GetUser().UserName;
article.ModifiedDate = DateTime.Now;
article = _ArticleRepository.EditArticle(article);
result.Add("isPublished", article.Published.ToString().ToLower());
}
catch (Exception ex)
{
_DBLogging.LoggError(ex);
}
return Json(result);
}
}
使用系统;
使用System.Collections.Generic;
使用System.Web.Mvc;
使用System.Web.Security;
使用十字路口。模型;
使用System.Linq;
使用System.Web;
使用Crossroads.Models.Repositories;
名称空间交叉点.控制器
{
[手机错误]
公共类ArticleController:BaseController
{
私人档案库;
公共物品控制员()
:此(新的ArticleRepository())
{ }
公共物品控制员(IArticleRepository articleRepo)
{
_ArticleRepository=articleRepo;
}
公共行动结果索引(bool?存档)
{
if(存档!=null&&archived.Value.Equals(true))
{
返回视图(“IndexArchived”,_ArticleRepository.ListArchivedArticles());
}
其他的
{
返回视图(_ArticleRepository.ListArticles());
}
}
公共行动结果详细信息(int Id)
{
var article=\u articlepository.GetArticle(Id);
国际单项体育联合会(已发表文章)
{
返回视图(“详细信息”,第条);
}
其他的
{
postStatus=新的PostStatusViewModel()
{
状态=状态。警告,
Message=“对不起,文章”+文章.标题+“已被删除。
请更新您的书签。”
};
返回重定向到操作(“PostStatus”,PostStatus);
}
}
public ActionResult详细信息(int id、string articleTitle)
{
返回重定向操作(“详细信息”,id);
}
[授权(Roles=“Manager”)]
公共行动结果新()
{
返回视图(“新建”,新文章());
}
[授权(Roles=“Manager”)]
[验证输入(错误)]
公共操作结果编辑(int id)
{
var viewModel=\u article repository.GetArticle(id);
返回视图(_ArticleRepository.GetArticle(id));
}
[接受动词(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
[验证输入(错误)]
[授权(Roles=“Manager”)]
公共行动结果创建(文章模型)
{
尝试
{
model.CreatedBy=Membership.GetUser().UserName;
model.CreatedDate=DateTime.Now;
model.ModifiedBy=Membership.GetUser().UserName;
model.ModifiedDate=DateTime.Now;
_ArticleRepository.CreateArticle(模型);
返回操作(“索引”);
}
接住
{
返回视图(“编辑”,model.Id);
}
}
[接受动词(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
[验证输入(错误)]
[授权(Roles=“Manager”)]
公共行动结果更新(文章模型)
{
尝试
{
model.ModifiedBy=Membership.GetUser().UserName;
model.ModifiedDate=DateTime.Now;
_ArticleRepository.EditArticle(模型);
返回RedirectToAction(“Details”,new{id=model.id});
}
捕获(例外情况除外)
{
_DBLogging.LoggError(ex);
postStatus=新的PostStatusViewModel()
{
状态=状态。错误,
Message=“”
};
返回视图(“编辑”);
}
}
public JsonResult ManageArchiveArticle(int-articleId,bool-isArchived)
{
var result=newdictionary();
尝试
{
var article=\u articlepository.GetArticle(articleId);
article.IsArchived=IsArchived?false:true;
article.ModifiedBy=Membership.GetUser().UserName;
article.ModifiedDate=DateTime.Now;
如果(article.IsArchived)article.ArchiveDate=DateTime.Now;
article=\u ArticleRepository.EditArticle(article);
添加(“isArchived”,article.isArchived.ToString().ToLower());
}
捕获(例外情况除外)
{
_DBLogging.LoggError(ex);
}
返回Json(结果);
}
public JsonResult ManagePublishArticle(int-articleId,bool-isPublished)
{
var result=newdictionary();
尝试
{
var article=\u articlepository.GetArticle(articleId);
article.Published=isPublished?false:true;
article.ModifiedBy=Membership.GetUser().UserName;
article.ModifiedDate=DateTime.Now;
article=\u ArticleRepository.EditArticle(article);
result.Add(“isPublished”,article.Published.ToString().ToLower());
}
捕获(例外情况除外)
{
_DBLogging.LoggError(ex);
}
返回Json(结果);
}
}
}
这是我的索引
<ul class="menu">
<li><%= Html.ActionLink("Article List", "Index", "Article")%></li>
<li><%= Html.ActionLink("New Article", "New", "Article")%></li>
</ul>