473,396 Members | 2,009 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

ASP.NET MVC

Hello,

I am using ASP.NET MVC and I am running into a problem.

I have a List Of MyClass which is a property of my controller
ViewData.

In the View I have a form where I need to display the List in the CSV
format.
When I submit the form I need to convert that CSV data to a list
before I save it to the database using Linq.

The View also displays the same data in an ordered list. And there are
other view which do the same.

How should I implement this and where to make the conversions? In the
View? In the Controller?

Thanks,
Miguel
Jul 7 '08 #1
3 2050
you don't speciify how the user makes any changes to the list. is the comma
seperated list uploaded as a file, or is it in a textarea?

as only the controller sees the postback data, then it must parse the csv
data, though I'd code a seperate library that converted both ways that was
callable by however needed it.

-- bruce (sqlwork.com)
"shapper" wrote:
Hello,

I am using ASP.NET MVC and I am running into a problem.

I have a List Of MyClass which is a property of my controller
ViewData.

In the View I have a form where I need to display the List in the CSV
format.
When I submit the form I need to convert that CSV data to a list
before I save it to the database using Linq.

The View also displays the same data in an ordered list. And there are
other view which do the same.

How should I implement this and where to make the conversions? In the
View? In the Controller?

Thanks,
Miguel
Jul 7 '08 #2
The conversion should be contained in a class library used behind the
scenes, IMO. As much as possible, you should massage the data formats prior
to binding.

You could, theorhetically, use the controller, as it is code. The problem
here is you are muddying the waters and make the controller into a
controller-converter. As far as what should call the converter, this is on
the controller level, not the view. A view is merely a tool to display data
to the end user, when used correctly.

One other option is to supe up your Model classes, especially with Preview 3
(and later? - nothing later released yet).

My favorite patterns, at least for now, is to alter the pages so they use
ViewPage<Tinstead of ViewPage. This works best if T is a bit of a proxy
class that binds the model and adds some helpers. Do not overblow this class
with funcationality. It should be a data object, not a behavioral object.

Using this pattern, you then pass an object (T) to the page with your model.
I have not thought this through completely (I am thinking and writing), but
I could see creating different routines that serve up the model in
differernt formats, CSV, list, standard data using IEnumerable, etc. I will
have to think this pattern through a bit before giving a final seal of
approval, as this may be a bit too much behavior. Right now, I am leaning
this direction, at least for a simple implentation.

Longer term, you could set up an interface T to adhere to for that page, but
that is probably overkill. It would be fun, as a geek, however. :-)

--
Gregory A. Beamer
MVP, MCP: +I, SE, SD, DBA

Subscribe to my blog
http://gregorybeamer.spaces.live.com/lists/feed.rss

or just read it:
http://gregorybeamer.spaces.live.com/

********************************************
| Think outside the box! |
********************************************
"shapper" <md*****@gmail.comwrote in message
news:76**********************************@m45g2000 hsb.googlegroups.com...
Hello,

I am using ASP.NET MVC and I am running into a problem.

I have a List Of MyClass which is a property of my controller
ViewData.

In the View I have a form where I need to display the List in the CSV
format.
When I submit the form I need to convert that CSV data to a list
before I save it to the database using Linq.

The View also displays the same data in an ordered list. And there are
other view which do the same.

How should I implement this and where to make the conversions? In the
View? In the Controller?

Thanks,
Miguel
Jul 7 '08 #3
On Jul 7, 4:53*pm, "Cowboy \(Gregory A. Beamer\)"
<NoSpamMgbwo...@comcast.netNoSpamMwrote:
The conversion should be contained in a class library used behind the
scenes, IMO. As much as possible, you should massage the data formats prior
to binding.

You could, theorhetically, use the controller, as it is code. The problem
here is you are muddying the waters and make the controller into a
controller-converter. As far as what should call the converter, this is on
the controller level, not the view. A view is merely a tool to display data
to the end user, when used correctly.

One other option is to supe up your Model classes, especially with Preview 3
(and later? - nothing later released yet).

My favorite patterns, at least for now, is to alter the pages so they use
ViewPage<Tinstead of ViewPage. This works best if T is a bit of a proxy
class that binds the model and adds some helpers. Do not overblow this class
with funcationality. It should be a data object, not a behavioral object.

Using this pattern, you then pass an object (T) to the page with your model.
I have not thought this through completely (I am thinking and writing), but
I could see creating different routines that serve up the model in
differernt formats, CSV, list, standard data using IEnumerable, etc. I will
have to think this pattern through a bit before giving a final seal of
approval, as this may be a bit too much behavior. Right now, I am leaning
this direction, at least for a simple implentation.

Longer term, you could set up an interface T to adhere to for that page, but
that is probably overkill. It would be fun, as a geek, however. :-)

--
Gregory A. Beamer
MVP, MCP: +I, SE, SD, DBA

Subscribe to my bloghttp://gregorybeamer.spaces.live.com/lists/feed.rss

or just read it:http://gregorybeamer.spaces.live.com/

********************************************
| Think outside the box! * * * * * * * * * * * * * * * |
********************************************"shapp er" <mdmo...@gmail.com>wrote in message

news:76**********************************@m45g2000 hsb.googlegroups.com...
Hello,
I am using ASP.NET MVC and I am running into a problem.
I have a List Of MyClass which is a property of my controller
ViewData.
In the View I have a form where I need to display the List in the CSV
format.
When I submit the form I need to convert that CSV data to a list
before I save it to the database using Linq.
The View also displays the same data in an ordered list. And there are
other view which do the same.
How should I implement this and where to make the conversions? In the
View? In the Controller?
Thanks,
Miguel
Hi,

Yes, the user makes the changes in a TextBox.

Basically the CSV values are tags associated to a file. For the file I
created a class which represents the ViewData:

public class FilePaper
{
public File File { get; set; }
public List<TagTags { get; set; }
}
public class FileViewData
{
public PagedList<FilePaperFilesPapers { get; set; }
public FilePaper FilePaper { get; set; }
}

Then on my File controller I have:
private FileViewData viewData = new FileViewData();

On my Update action I have something like this:

FilePaper paper = new FilePaper();
BindingHelperExtensions.UpdateFrom(paper.File, Request.Form);

I know that in my View TextBox I can insert some code to convert the
list to CSV but when I submit the form where should I convert the CSV
to the list and insert it in the viewdata Tags property?

I know I can use LINQ:
List<Tagform = CSVList.Split(',').Select(p =new Tag { Name =
p.Trim() }).ToList();

But I am completely confused about this.

I know that I could use a property of type String in my ViewData to
hold the CSV values but if I have a List I think that is going
backward.
And in fact I might need to display that list in various formats so I
don't think this would be a good option.

Could someone, please, help me out?

Thanks,
Miguel
Jul 8 '08 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: William C. White | last post by:
Does anyone know of a way to use PHP /w Authorize.net AIM without using cURL? Our website is hosted on a shared drive and the webhost company doesn't installed additional software (such as cURL)...
2
by: Albert Ahtenberg | last post by:
Hello, I don't know if it is only me but I was sure that header("Location:url") redirects the browser instantly to URL, or at least stops the execution of the code. But appearantely it continues...
3
by: James | last post by:
Hi, I have a form with 2 fields. 'A' 'B' The user completes one of the fields and the form is submitted. On the results page I want to run a query, but this will change subject to which...
0
by: Ollivier Robert | last post by:
Hello, I'm trying to link PHP with Oracle 9.2.0/OCI8 with gcc 3.2.3 on a Solaris9 system. The link succeeds but everytime I try to run php, I get a SEGV from inside the libcnltsh.so library. ...
1
by: Richard Galli | last post by:
I want viewers to compare state laws on a single subject. Imagine a three-column table with a drop-down box on the top. A viewer selects a state from the list, and that state's text fills the...
4
by: Albert Ahtenberg | last post by:
Hello, I have two questions. 1. When the user presses the back button and returns to a form he filled the form is reseted. How do I leave there the values he inserted? 2. When the...
1
by: inderjit S Gabrie | last post by:
Hi all Here is the scenerio ...is it possibly to do this... i am getting valid course dates output on to a web which i have designed ....all is okay so far , look at the following web url ...
2
by: Jack | last post by:
Hi All, What is the PHP equivilent of Oracle bind variables in a SQL statement, e.g. select x from y where z=:parameter Which in asp/jsp would be followed by some statements to bind a value...
3
by: Sandwick | last post by:
I am trying to change the size of a drawing so they are all 3x3. the script below is what i was trying to use to cut it in half ... I get errors. I can display the normal picture but not the...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.