سلام و درود بر استاد عزیز
توی api برای insert از نمونه کد زیر استفاده میشه (طبق آموزش)
حالا میخواستم بدونم جهت update و همچنین delete کردن باید چیکار بکنیم
public void Posttest(bazargani_tankhah tradif)
{
tansanad.create_date = DateTime.Now;
dbtankhah_sanad.tankhah_sanad.Add(tansanad);
dbtankhah_sanad.SaveChanges();
}
سلام
از put و delete استفاده کتید
ممنون ، راهنمایی بیشتر میفرمایید لطفا
یه نمونه کد هم باشه عالی
من از این کد استفاده کردم ، ارور گرفت
[HttpDelete]
[Route("deleteradif/{radifid}")]
public bazargani_tankhah deleteradif(int id)
{
var del = dbtankhah_radif.tankhah_radif.Find(id);
dbtankhah_radif.tankhah_radif.Remove(del);
return del;
}
سرچ کنید Create Rest Api In MVC
نمونه های کامل بسیار هست
ممنون ، اطمینان داشته باشید قبل از مطرح کردن هر پرسش چندین بار جستجو کردم و به نتیجه ای نرسیدم
دوستان ، کسی میتونه راهنمایی کنه و نمونه کدی در این مورد رو معرفی کنه؟
ممنون میشم
کد های api رو ببینید
کار نکرد استاد عزیز
این کد و همچنین عکس ارور
[HttpDelete]
[Route("deleteradif/{radifid}")]
public HttpResponseMessage Delete(int id)
{
var tankhahradif = dbtankhah_radif.tankhah_radif.Find(id);
if (tankhahradif == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
dbtankhah_radif.tankhah_radif.Remove(tankhahradif);
dbtankhah_radif.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, tankhahradif);
}
در اسرع وقت بررسی میکنم ببینم نمونه با زامارین داریم
پیددا کنم براتون میزارم
ممنونم استاد عزیز
خدا رو شکر حل شد ، کد به شکل زیر تغییر کرد - فقط میمونه کد update
[HttpGet]
[Route("deleteradif/{radifid}")]
public HttpResponseMessage Delete(int radifid)
{
var tankhahradif = dbtankhah_radif.tankhah_radif.Find(radifid);
if (tankhahradif == null)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
dbtankhah_radif.tankhah_radif.Remove(tankhahradif);
dbtankhah_radif.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, tankhahradif);
}
سلام استاد
برای update کردن توی api از کد زیر استفاده کردم
[HttpGet]
[Route("updateradif/{radifid}")]
public HttpResponseMessage Put( int radifid, bazargani_tankhah tankhahradif)
{
if (!ModelState.IsValid)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
if (radifid != tankhahradif.Id)
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
dbtankhah_radif.Entry(tankhahradif).State = EntityState.Modified;
dbtankhah_radif.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK);
}
و توی repository از کد زیر
public void Update_Tankhah_radif(int id,bazargani_tankhah tan)
{
using (var client = new HttpClient())
{
string json = JsonConvert.SerializeObject(tan);
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
var result = client.PostAsync(ApiUrl + "/updateradif/"+id, content).Result;
}
}
هیچ اروری نمیده ، ولی عملیات update انجام نمیشه
انگار با آدرس api مشکل داره و اصلا وارد کد update من نمیشه
اون صفت get رو باید بردارید و put بدید
تاثیری نداره استاد
Repository رو برای put درست نوشتم؟ کد و همچنین نحوه آدرس دهی API
public void Update_Tankhah_radif(int id,bazargani_tankhah tan)
{
using (var client = new HttpClient())
{
string json = JsonConvert.SerializeObject(tan);
StringContent content = new StringContent(json, Encoding.UTF8, "application/json");
var result = client.PutAsync(ApiUrl + "/updateradif/"+id, content).Result;
}
}
در سمت وب Trace کنید ببینید اصلا متد update فراخوانی میشه یا نه
نه استاد / انگار اصلا وارد متد update نمیشه
عجب داستانی داره این api
استاد به دادم برس
سلام استاد
راه حلی برای این موضوع پیدا نکردید؟
من تو این چند روز واقعا کلی تست زدم . راه های محتلف رو امتحان کردم ، نشد که نشد
لطفا به دادم برسید
ممنون
من دارم باهاش کار میکنم و مشکلی ندارم
کد api خودم رو براتون میزارم
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using SPA_Example.Models;
namespace SPA_Example.Controllers
{
public class PeopleController : ApiController
{
private SPA_ExampleContext db = new SPA_ExampleContext();
// GET: api/People
public IQueryable<Person> GetPeople()
{
return db.People;
}
// GET: api/People/5
[ResponseType(typeof(Person))]
public IHttpActionResult GetPerson(int id)
{
Person person = db.People.Find(id);
if (person == null)
{
return NotFound();
}
return Ok(person);
}
// PUT: api/People/5
[ResponseType(typeof(void))]
public IHttpActionResult PutPerson(int id, Person person)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != person.ID)
{
return BadRequest();
}
db.Entry(person).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!PersonExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
// POST: api/People
[ResponseType(typeof(Person))]
public IHttpActionResult PostPerson(Person person)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.People.Add(person);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = person.ID }, person);
}
// DELETE: api/People/5
[ResponseType(typeof(Person))]
public IHttpActionResult DeletePerson(int id)
{
Person person = db.People.Find(id);
if (person == null)
{
return NotFound();
}
db.People.Remove(person);
db.SaveChanges();
return Ok(person);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool PersonExists(int id)
{
return db.People.Count(e => e.ID == id) > 0;
}
}
}
این کد بدون هیچ مشکل داره کار میکنه
با کد های خودتون مقایسه کنید و اگر برابر بود مشکل از جای دیگه است
استاد ممنون
تا اینجاش درست
ولی با چه آدرس Route فراخونی میشه؟
منظورم اینه توی repository چجوری فراخونی میشه؟
چون کلا متفاوت هستش نسبت به اون برنامه دیوار
توی اونجا با هر چی توی api کار داشتیم با یه آدرسی از توی Repository فراخونیش میکردیم و پاسش میدادیم به اون آدرس
اینجا و توی این کد شما همچین آدرس و نحوه پاس دادن اطلاعات بهش فرق داره انگار
کد repository هم لطف میکنید؟
من فکر کنم مشکل از اونه
کدی که به وسیله اون و آدرس URL متد رو فراخونی میکنیم
ممنونم
فقط یه راهنمایی
ممنون میشم
به من بگید چجوری از توی برنامه دیوار اطلاعاتی که نیاز به ویرایش دارن رو بفرستم برای متد put در کد شما
مثلا Save یه آدرس URL داشت که از طریق اون آدرس به متد save توی API درسترسی داشتیم و اطلاعات رو میدادیم بهش
توی اینجا برای update چجوریه استاد؟
میتونید به متد Put در Api یک Rout بدید تا بتونید از طریق url بهش دسترسی داشته باشید
خب اینکار رو که کردم
نشد
ای خدا
نمیشه نمونه repository رو هم برای من بزارید برای متد put?
ممنون میشم
این آخریه دیگه
نشد کلا میبوسم میزارم کنار
دوسن من این متد چه ربطی به repository داره آخه !!!!!!!!!
اون یه متد هست که باید داخل put صدا زده بشه
اگر عمل نمیکنه باید Trace کنید ببینید در کدام خط به مشکل میخوره
اصلا وارد میشه یا نه
شما قبل از استفاده از قابلیت خاصی مثل Web Api باید راجع به اون تحقیق کنید و بررسی کنید ببینید نحوه عملکرد اون به چه شکل است
repository میگم چون تمام قسمت های مثل save و یا select کردن ها توی repository و به وسیله آدرس دهی انجام میشد
کلا داستان فرق کرده اینجا
کسی که یه نمونه ساده از برنامه دیوار رو میخواد بنویسه گزینه هایی مثل update و delete رو هم 100% نیاز پیدا میکنه و به نظرم لازم بود آموزش داده بشه توی فیلم ها
در هر صورت ممنون و عذر میخوام به خاطر سوال های زیاد
آموزش Repository سایت رو بیینید
متد Update اون رو در متد Put صدا بزنید
: )
نمونه کد ندارم دوست من
ما سرویس ها موبایلمون رو SOA با WCF میسازی برای همین از Service جای Repository استفاده میکنیم
حالا شما برای اینکه کارت راه بیوفته فعلا دستور آپپدیت رو مستقیم داخل Put بنویس تا در اسرع وقت کدت رو اصلاح کنی