2016-06-09 17 views
0

Hallo Leute, ich bin neu hier. Ich habe ein kleines Problem, das meine HomeController und ich werde Get und Create mit Web-API, aber ich kann nicht finden und schreiben ein Bearbeiten/Details und Löschen. Erstellen und Index für Bearbeiten und LöschenWeb Api und ASP.Net MVC

public class HomeController : Controller 
{ 
    // GET: Home 
    public ActionResult Index() 
    { 

     List<Product1Model> lst =new List<Product1Model>(); 
     HttpClient Client = new HttpClient(); 
     Client.BaseAddress = new Uri("http://localhost:19440/"); 

     Client.DefaultRequestHeaders.Accept.Add(
      new MediaTypeWithQualityHeaderValue("application/json")); 
     HttpResponseMessage responsive = Client.GetAsync("api/Product1").Result; 
     if (responsive.IsSuccessStatusCode) 
     { 
      lst = responsive.Content.ReadAsAsync<List<Product1Model>>().Result; 
     } 
     return View(lst); 
    } 

    public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Create(Product1Model model) 
    { 
     HttpClient Client = new HttpClient(); 
     Client.BaseAddress = new Uri("http://localhost:19440/"); 

     Client.PostAsJsonAsync<Product1Model>("api/Product1",model) 
      .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode()); 
     return RedirectToAction("index"); 
    } 

} 

Antwort

0

die aktuelle Struktur des Beispiels Da Sie nur eine Wiederholung des Musters spülen müssen Sie derzeit in verwenden.

Sie folgen der Konvention Unter der Annahme,

Für Details/Bearbeiten Sie benötigen, um Ihre Ansicht in der Views/Home/Detail.cshtml erstellen und dann Aktionsmethoden fügen Sie die GET und POST-Anfragen bearbeiten ...

//GET Home/Detail/5 
public async Task<ActionResult> Detail(int id) { 
    var client = new HttpClient(); 
    client.BaseAddress = new Uri("http://localhost:19440/"); 
    client.DefaultRequestHeaders 
     .Accept 
     .Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    string endpoint = string.Format("api/Product1/{0}", id); 
    var response= await client.GetAsync(endpoint); 
    if (response.IsSuccessStatusCode) { 
     var model = response.Content.ReadAsAsync<Product1Model>(); 
     return View(model); 
    } 
    return HttpNotFound(); 
} 

//POST Home/Detail/5 
[HttpPost] 
public async Task<ActionResult> Detail(int id, Product1Model model) { 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri("http://localhost:19440/"); 
    string endpoint = string.Format("api/Product1/{0}", id); 
    await client.PostAsJsonAsync<Product1Model>(endpoint, model) 
     .ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode()); 
    return RedirectToAction("Index"); 
} 

Zum Löschen ist es etwas komplizierter, da Sie entscheiden müssen, welche Http-Methode aus Ihrer Sicht verwendet werden soll. Ihr Aufruf an die Web-API würde jedoch wahrscheinlich eine DELETE-Methode erwarten. Sie könnten mit Konventionen halten und verwenden HttpDelete den ganzen Weg wie ...

//DELETE Home/Delete/5 
[HttpDelete] 
public async Task<ActionResult> Delete(int id) { 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri("http://localhost:19440/"); 
    client.DefaultRequestHeaders 
     .Accept 
     .Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    string endpoint = string.Format("api/Product1/{0}", id); 
    var responsive = await client.DeleteAsync(endpoint); 
    if (responsive.IsSuccessStatusCode) { 
     return RedirectToAction("Index"); 
    } 

    return HttpNotFound(); 
} 

benötigen Sie den Client (View), um sicherzustellen, das richtige http-Methode verwendet, wenn die antragstell

0
public ActionResult Edit(YourModel model) 
{ 
    call your edigint logc 
    return View(); 
} 
public ActionResult Details(int itemId) 
    { 
     YourModel = new ModelType(); 
     YourModel = Call your Detail Logic 

     return view(YourModel )   
    } 
Verwandte Themen