3

Ich bin nicht in der Lage, StoredProcedure-Ergebnis von Db abrufen und in Sicht anzeigen. In DB StoredProcedure adaequatSo zeigen Sie StoredProcedure-Ergebnis in MVC View an

Mein StoredProcedure In MsSQL

ALTER PROCEDURE [dbo].[Search] 
    (
    @param1 varchar(max), 
    @param2 varchar(max), 
    @param3 varchar(max), 
    @param4 varchar(max) 
    ) 
AS 
BEGIN 
select BusinessLogo,BusinessTitle,Details,ProfileUrl,Location,Country from ClientBusinesses where location like '%'[email protected]+'%' and location like '%'[email protected]+'%' 
and location like '%'[email protected]+'%' and location like '%'[email protected]+'%' 
END 

Controller-Code, wo ich StoredProcedure Ausführende bin

Ich versuchte folgenden Code Aber Facing aber nicht sehen können Daten in ViewBag Es gibt Error on Foreach-Schleife auf ViewBag, dass Spalte BusinessLogo nicht vorhanden ist, aber Sie können sehen, dass ich BusinessOnlogo und ähnliche Fehler für andere Spalten auch

abrufen 0
ViewBag listdata = db.Search(Country, state, city, str); 

Ich habe auch versucht Code unten -

List<ClientBusiness> listd=new List<ClientBusiness>(); 
listd=db.Search(Country, state, city, str); 

Aber es gibt Fehler

Error 2 Cannot implicitly convert type 'System.Data.Entity.Core.Objects.ObjectResult<string>' to 'System.Collections.Generic.List<PromoteMyName.ClientBusiness>' F:\Desktop DATA\Desktop 23 Feb\PromoteMyName\PromoteMyName\Controllers\HomeController.cs 135 23 PromoteMyName 

In View I Einfach-Code verwende Below

@foreach(var item in ViewBag.listdata) 
    { 
} 

Ist das möglich um die von sp abgerufenen Daten an ViewBay zu übergeben ?

+1

Sie müssen Ihre Daten in ein Modell projizieren und eine Sammlung dieses Modells auf die Ansicht übergeben. –

+0

@StephenMuecke Meinst du mit viewmodel –

+0

Ich verwende dbfirst Ansatz. ClientBusiness ist meine Tabelle. Wenn ich Select * in Storedprocedure verwenden kann, kann ich clientbusiness Modal übergeben, um –

Antwort

0

Tun Sie etwas Ähnliches, dies ist keine exakte Lösung, aber gehen Sie in diese Richtung. 1) Definieren Sie Ihr Viemodel, um die Daten von StoredProc zu speichern.

AddressModel.cs

public class AddressModel 
{ 
    public string City {get; set;} 
    public string State {get; set;} 
} 

AddressSearchResultModel.cs

public class AddressSearchResultModel 
{ 
    public List<AddressModel> AddressResults {get; set;} 
} 

2) Wenn Sie die Daten aus storedproc erhalten, die Daten an den definierten Modell übergeben.

var dataFromStoredProc=db.Search(Country, state, city, str); 
// Translate the addressSerachResultModel to addressSearchResultModel 
var addressSearchResultModel= new AddressSearchResultModel(); 
var addressModel= new AddressModel() 
foreach(var item in dataFromStoredProc) 
{ 
    //Assign every property from the dataFromStoredProc to  AddressModel 
    //and add it to the list 
    addressSearchResultModel.Add(AddressModel); 
} 

3) Schließlich die Ansicht von Ihrem Viewmodel machen

[HttpGet] 
public ActionResult GetResults() 
{ 
    var dataFromStoredProc=db.Search(Country, state, city, str); 

    // Translate the addressSerachResultModel to AddressSearchResultModel 
    var addressSearchResultModel= new AddressSearchResultModel(); 
    var addressModel= new AddressModel() 
    foreach(var item in dataFromStoredProc) 
    { 
     //Assing every property from the dataFromStoredProc to AddressModel 
     //and add it to the list 
     addressSearchResultModel.Add(AddressModel); 
    } 

    return View(addressSearchResultModel);  
} 
Verwandte Themen