bftarane
یک شنبه 20 خرداد 1397, 00:00 صبح
سلام
من می خوام یک فرم درج در پارشیال ویو داشته باشم، حالا می خوام این پارشیال ویو رو در یک ویو بندازم و بدون استفاده از ajax یا jquery.ajax
ثبت داده انجام بشه.
متأسفانه به مشکل خوردم.
این کوئری جدول هست
USE [testdb]
GO
/****** Object: Table [dbo].[tblTest] Script Date: 6/9/2018 11:37:34 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](255) NOT NULL,
CONSTRAINT [PK_tblTest] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
کدهای کنترلر به این صورته
public class PartialManagerController : Controller
{
// GET: PartialManager
public ActionResult Index()
{
return View();
}
private testdbEntities db = new testdbEntities();
public ActionResult MyPartialAction([Bind(Include = "Id,Title")] tblTest tblTest)
{
if (ModelState.IsValid)
{
db.tblTests.Add(tblTest);
db.SaveChanges();
}
return View(tblTest);
}
}
و این هم کدهای پارشیال ویو هست
@model TestPartialCrud.Models.tblTest
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>tblTest</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
این هم نحوه فراخوانی پارشیال ویو
@{
ViewBag.Title = "Home Page";
}
@{
Html.RenderAction("MyPartialAction", "PartialManager");
}
الان با 2 تا مشکل مواجه هستم
اول اینکه به محض اینکه [HttpPost] رو بالای اکشن قرار می دم با این خطا مواجه می شم
که داره میگه اکشن رو پیدا نمی کنه
A public action method 'MyPartialAction' was not found on controller 'TestPartialCrud.Controllers.PartialManagerControl ler'.
also when I add this code to action
و دیگه اینکه با قرار دادن کد درج در اکشن، یعنی کد زیر
if (ModelState.IsValid)
{
db.tblTests.Add(tblTest);
db.SaveChanges();
}
با این خطا مواجه میشم
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
یعنی کار به کلیک کردن روی دکمه درج هم نمی کشه، و همینکه صفحه اجرا میشه این خطا رو میده.
لطفا راهنمایی کنید، چطور می تونم این کار رو انجام بدم؟
متأسفانه اکثر مثال هایی که در اینترنت هست این کار رو با jquery.ajax آموزش داده ولی من باید این کار رو بدون ajax انجام بدم.
من می خوام یک فرم درج در پارشیال ویو داشته باشم، حالا می خوام این پارشیال ویو رو در یک ویو بندازم و بدون استفاده از ajax یا jquery.ajax
ثبت داده انجام بشه.
متأسفانه به مشکل خوردم.
این کوئری جدول هست
USE [testdb]
GO
/****** Object: Table [dbo].[tblTest] Script Date: 6/9/2018 11:37:34 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[tblTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Title] [nvarchar](255) NOT NULL,
CONSTRAINT [PK_tblTest] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
کدهای کنترلر به این صورته
public class PartialManagerController : Controller
{
// GET: PartialManager
public ActionResult Index()
{
return View();
}
private testdbEntities db = new testdbEntities();
public ActionResult MyPartialAction([Bind(Include = "Id,Title")] tblTest tblTest)
{
if (ModelState.IsValid)
{
db.tblTests.Add(tblTest);
db.SaveChanges();
}
return View(tblTest);
}
}
و این هم کدهای پارشیال ویو هست
@model TestPartialCrud.Models.tblTest
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>tblTest</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
این هم نحوه فراخوانی پارشیال ویو
@{
ViewBag.Title = "Home Page";
}
@{
Html.RenderAction("MyPartialAction", "PartialManager");
}
الان با 2 تا مشکل مواجه هستم
اول اینکه به محض اینکه [HttpPost] رو بالای اکشن قرار می دم با این خطا مواجه می شم
که داره میگه اکشن رو پیدا نمی کنه
A public action method 'MyPartialAction' was not found on controller 'TestPartialCrud.Controllers.PartialManagerControl ler'.
also when I add this code to action
و دیگه اینکه با قرار دادن کد درج در اکشن، یعنی کد زیر
if (ModelState.IsValid)
{
db.tblTests.Add(tblTest);
db.SaveChanges();
}
با این خطا مواجه میشم
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
یعنی کار به کلیک کردن روی دکمه درج هم نمی کشه، و همینکه صفحه اجرا میشه این خطا رو میده.
لطفا راهنمایی کنید، چطور می تونم این کار رو انجام بدم؟
متأسفانه اکثر مثال هایی که در اینترنت هست این کار رو با jquery.ajax آموزش داده ولی من باید این کار رو بدون ajax انجام بدم.