Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新、编辑、删除和导入文件。javascript。在VisualStudio中使用ASP:NET MVC#_C#_Jquery_Asp.net Mvc - Fatal编程技术网

更新、编辑、删除和导入文件。javascript。在VisualStudio中使用ASP:NET MVC#

更新、编辑、删除和导入文件。javascript。在VisualStudio中使用ASP:NET MVC#,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我是一名编码初学者。我被要求使用ASP.Net、MVC在VisualStudio中制作一个应用程序 我已经创建了一个视图,您可以在其中显示数据库中的表。现在我必须能够在另一个视图和同一个视图中编辑数据 创建新视图时,尝试运行时出现以下错误: 参数字典包含“mymvcapapplication.Controllers.EmailTemplateController”中方法“System.Web.Mvc.ActionResult Edit(Int32,System.String,System.Str

我是一名编码初学者。我被要求使用ASP.Net、MVC在VisualStudio中制作一个应用程序

我已经创建了一个视图,您可以在其中显示数据库中的表。现在我必须能够在另一个视图和同一个视图中编辑数据

创建新视图时,尝试运行时出现以下错误:

参数字典包含“mymvcapapplication.Controllers.EmailTemplateController”中方法“System.Web.Mvc.ActionResult Edit(Int32,System.String,System.String,System.String,System.String)”的非空类型“System.Int32”的参数“EmailId”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数。 参数名称:参数

我无法找出控制器中的问题是什么,因为我只有两个月的学习时间,所以我仍在进行基础工作

这是我的代码:

控制器:

public ActionResult Edit (int EmailId, string userName, string title, string Email, string description)
{          
    UpdateDataBase(EmailId, userName, title, Email, description);
    return View("EmailData");
}

[HttpPost]
public ActionResult Edit(ModelTemplateEmail  EditEmailData)
{       
    if (ModelState.IsValid)
    {                
        return RedirectToAction("EmailData");
    };

    return View(EditEmailData);
}
视图:

@使用(Html.BeginForm(“编辑”,“EmailTemplate”,新的{Id=Model.EmailData},FormMethod.Post,null))
{
@Html.AntiForgeryToken()
模型模板电子邮件

@Html.ValidationSummary(true,“,new{@class=“text danger”}) @LabelFor(model=>model.EmailId,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.EmailId,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.EmailId,“,new{@class=“text danger”}) @LabelFor(model=>model.userName,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.userName,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.userName,“,new{@class=“text danger”}) @LabelFor(model=>model.Email,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Email,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.Email,“,new{@class=“text danger”}) @LabelFor(model=>model.Title,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Title,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.Title,“,new{@class=“text danger”}) @LabelFor(model=>model.description,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.description,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.description,“,new{@class=“text danger”}) @LabelFor(model=>model.Url,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Url,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.Url,“,new{@class=“text danger”}) @Html.HiddenFor(model=>model.EmailData) } @ActionLink(“返回列表”、“电子邮件数据”) @节脚本{ @Scripts.Render(“~/bundles/jqueryval”) }
新的{parameterName=必须与操作
操作(int paramaterName
)上的参数名匹配,在本例中为
电子邮件ID

参数字典包含不可为空类型的参数“EmailId”的空条目

参数名为
EmailId
,但您的
ActionLink
正在使用
id

如果您查看呈现的html(在客户端上),它将创建一个类似
.Edit?id=123
的链接,但您需要调用的操作是一个类似
.Edit?EditId=123
的链接

您可以将操作签名更改为

public ActionResult Edit(int id, 
或者将您的
ActionLink
更改为:

@Html.ActionLink("Edit", "EditData", new { EmailId = item.EmailId }, null) 

@HtmlAction
新的{parametername=
必须与操作
操作(int paramaterName
)上的参数名匹配,在本例中为
EmailId

参数字典包含不可为空类型的参数“EmailId”的空条目

参数名为
EmailId
,但您的
ActionLink
正在使用
id

如果您查看呈现的html(在客户端上),它将创建一个类似
.Edit?id=123
的链接,但您需要调用的操作是一个类似
.Edit?EditId=123
的链接

您可以将操作签名更改为

public ActionResult Edit(int id, 
或者将您的
ActionLink
更改为:

@Html.ActionLink("Edit", "EditData", new { EmailId = item.EmailId }, null) 

从一个操作开始(您有4个操作(包括重载),这可能会混淆问题)编辑。这有许多必须提供的参数-
字符串
参数将接受null,而
int
参数将不接受null-,因此这是关于如何打开编辑页面的问题-您提供了视图,但这并没有显示您首先如何进入视图-即调用
。/Edit?EditId=1
谢谢你的回答!这意味着我必须让int接受null?不-这意味着你需要在打开页面时将其作为参数传入。好的。我不知道如何做,但我会调查。谢谢你的建议!@Html.ActionLink(“编辑”,“编辑数据”,new{id=item.EmailId},null)|从一个操作开始(你可以
@Html.ActionLink("Edit", "EditData", new { EmailId = item.EmailId }, null)